我有一个愚蠢的问题。 为什么这给了488.15999999999997而不是488.16
double dbl = 427.14 + 61.02;
System.out.println(dbl);
我听说如果我们考虑这么高的准确性(如货币相关逻辑),我们必须使用BigDecimal。但我想知道这背后是什么。
答案 0 :(得分:1)
这是“正常”行为。请记住,对于一般情况,十进制值无法在计算机中准确表示,因此很少有错误会开始蔓延。看一下What Every Computer Scientist Should Know About Floating-Point Arithmetic,对于任何编写处理十进制值的代码的人来说,这是必读的。
答案 1 :(得分:1)