As we all know that Float and Double are data type
Float
It takes 4 bytes in java. It can store only 6 digit after the Decimal point.
Double
By default any Decimal Values treated as double value. It takes 8 bytes of memory and it can store 15 values after point.
If I declare the variable as – float f=10.22;
It means I am assigning double value to float which is not possible directly. We have to write ‘f’ after 10.22 like f=10.22f. Because by default any value treated as double.
So, during comparison what happens, let’s discuss-
If I takes a variable as-
float num=10.3f ; // now 10.3 is float value // If I compare it with double value
if (num==10.3)
{
System.out.println (“true”)
}
Else
{
System.out.println (“false”);
}
Output will Be :false
Again I am comparing the values
float num=10.25f ; // now 10.3 is float value // if I compare it with double value
if(num==10.25) // comparing with double
{
System.out.println(“true”);
}
else
{
System.out.println(“false”);
}
Output will be :– True
Why the output is varying
When 10.3 is converted to binary format. This is written as 1010.010011 After the decimal values we convert it as follows:
.3*2=0.6——-> 0
0.6*2=1.2——->1
0.2*2=0.4——->0
0.4*2=0.8——->0
0.8*2=1.6——->1
0.6*2= 1.2——->1…….
Here as 6 appeared this procedure will again repeat for the n times.
In float it takes only 6 digits after decimal value & In case of double it takes 15 digits after decimal value.
So, the difference occurs during the comparison. And the result becomes “false”.
If I takes 2nd scenario of 10.25f and convert it to binary:-
10.25=1010.01
After the decimal value ,we convert it as:
.25*2=0.50——->0
0.50*2=1.00——>1…..
Now as 0 has appeared , convert it to to binary.
In case of float it will store 2 digits easily after decimal value.
In case of double it will also stores 2 digits after decimal value because 10.25 has only 2 digits after decimal value.
So, during comparison both are same and results become “true”
Next Topic discussion will be on decimal “.” (Decimal Dot).