我在我的代码中发现了一个 but,经过一些搜索我意识到我正在执行的一些 float 操作产生了错误的结果。所以我输入了以下循环:
float f = 0f;
for(int i =0; i<15; i++){
f+= 10.1f;
System.out.println(f);
}
但在结果中我得到了意想不到的额外十进制值:
10.1
20.2
30.300001
40.4
50.5
60.6
70.7
80.799995
90.899994
100.99999
111.09999
121.19999
131.29999
141.4
151.5
这是怎么回事,我该如何预防?
最佳答案
你无法“阻止”它。相反,您需要做的是期待它并进行补偿。
参见:什么 Every Computer Scientist Should Know About Floating-Point Arithmetic
关于java - 对 float 或 double 值执行重复加法会产生意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20406141/