java - what is the reason behind below condition -
this question has answer here:
class magicwithoperators{ public static void main(string[] args) { float f = 10.2f; double d = 10.2; system.out.println(f==d); } } output: false.
why 10.2f==10.2 false 10.0f==10.0 true?
the reason value 10.2 cannot represented exactly, using either float or double representations. both different approximations 10.2, mathematically not equal.
the reason it's true 10.0f , 10.0 10 can represented in both float , double representations.
here hexadecimal representations of numbers above.
41233333 // 10.2f (float, inexact) 4024666666666666 // 10.2 (double, inexact) 4024666660000000 // 10.2f (widened double, inexact) 41200000 // 10.0f (float, exact) 4024000000000000 // 10.0 (double, exact) 4024000000000000 // 10.0f (widened double, exact) the conversions done integer.tohexstring(float.floattointbits()) , long.tohexstring(double.doubletolongbits).
Comments
Post a Comment