I just try to calculate 5.3 - 5, and the answer is a bit off.

this is the code:

double answer = 5.3 - 5;
println("answer = " + answer);

and the output is: "answer = 0.2999999999999998" instead of 0.3.

I use Eclipse on win 7 32 bit as a compiler and editor.
Any idea why this is happening and how to fix this?


5 Years
Discussion Span
Last Post by binoman

This is very useful. Many thanks! I'll use that, and most likely it will solve the issue, but do you know why it happened in the first place?


I am absolutely not an expert at this, but I think this might answer your question.

(Link was provides to me by SasseMan some time ago)


Floating point numbers are represented in binary fractions. (1/2 + 1/4 + 1/8 + 1/16 etc). You fractional value is 0.3, ie 3/10. There is no exact way to represent 3/10 using only binary fractions, so the answer has to be slightly wrong. This is true of all floating point arithmetic on all binary computers.
When using floating point you must always be aware of this, and be ready to round your output to the right number of decimal places when you print it.


Thank you very much every one!
and thanks for answering so fast!
it help a lot!

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.