Floating point error in representation?

2020-01-24 14:05发布

问题:

when i make this multiplication

0.94 * 8700

the output is

8177.999999999999

but it should have been

8178

i'm using java , but i don't think this error is related to a particular Programming language now my question is ... why this happened ??
and what other numbers (just as an example) cause the same error?

回答1:

The specific reason in your case is that the real number 0.94 cannot be represented exactly in a double precision floating point. When you type 0.94, the actual number stored is 0.939999999999999946709294817992486059665679931640625.



回答2:

It isn't an error. IEEE floats can't represent decimal numbers exactly.