Java中的浮点怪异现象

ama*_*ice 0 java floating-accuracy

可能重复:
Java程序中奇怪的浮点行为

我在Java中遇到了这种奇怪的现象。在Java程序中尝试以下语句:

System.out.print(4.0-3.1);
Run Code Online (Sandbox Code Playgroud)

输出将是 0.8999999

为什么会这样?以及如何更改?

Ree*_*sey 5

我建议阅读每位科学家应该了解的有关浮点运算的知识。这是浮点数学运算的标准行为。大多数系统(包括Java)都使用 IEEE 754作为浮点数的标准表示形式。确切地说,此标准并不总是能完美地代表数值,因此,如此处所见,您经常会在打印时看到轻微的数值不一致。