# Decimal Values Comparison (floats & double)

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).

This post first appeared on Autoboxing In Java | My CMS, please read the originial post: here

# Share the post

Decimal Values Comparison (floats & double)

×