Dear all
I have got some question about float & double , my answer is due to precision because float is 32 bit integer and double is 64 bit integer, However I am not sure...please help me

Output : different
same

In first case why it is not equal and in case the value is same,why is it so?

I think you are getting "different" for the 3.2 because a computer's floating point unit works with base 2 binary and 0.2 can't be represented precisely in binary, it is called a repeater fraction. In base-2 only numbers with denominators that are powers of 2 are terminating, which I think is only .25, .50, and .75, which is why 6.5 shows up as "same".

Hope this helps, but there may be better minded people out there that can give you a better explanation perhaps.

Float and double values are not integers, but rather floating point numbers. The Java
integer types are: byte, short, int, long (and char - 16 bits unsigned). In both cases
your code is comparing a float value to a double, as the compiler sees 3.2f as a float
and 3.2 (without the f) as a double. I suspect the precision of the compare logic has
something to do with the different results. Someone else may comment further.

As Ian pointed out, 6.5 can be represented exactly in binary, whereas 3.2 can't. That's why the difference in precision doesn't matter for 6.5, so 6.5 == 6.5f.

6.5 in binary: 110.1 (exact result, the rest of the digits are just zeroes)
3.2 in binary: 11.001100110011001100110011001100110011001100110011001101... (here precision matters!)

A float only has 24 bits precision (the rest is used for sign and exponent), so:

3.2f in binary: 11.0011001100110011001100 (not equal to the double precision approximation)