-1

我有一个愚蠢的问题。为什么这是给 488.15999999999997 而不是 488.16

double dbl = 427.14 + 61.02;
System.out.println(dbl);

我听说如果我们考虑这么高的准确性(如货币相关逻辑),我们必须使用 BigDecimal。但我想知道这背后的原因。

4

2 回答 2

1

如何解决 Java Rounding Double 问题 这个类似问题的答案点在这里 https://blogs.oracle.com/CoreJavaTechTips/entry/the_need_for_bigdecimal

于 2013-08-06T14:05:45.830 回答
1

这是“正常”的行为。请记住,对于一般情况下,十进制值无法在计算机中精确表示,因此小错误将开始蔓延。看看What Every Computer Scientist Should Know About Floating-Point Arithmetic,对于任何编写处理十进制值的代码的人来说,它都是必读的。

于 2013-08-06T14:04:52.753 回答