Yes, it was down to rounding issue. When I give round(m_criticality, 2) <- this works. So like in other programming languages, the storage representation of float must be a approximation and not an exact.
I am indexing this data to druid from parquet and that field calculation is already round( x, 2). So I did not expect this issue.