Java乘法错误

Kei*_*tix 1 java multiplication

当我运行以下代码时,我收到一个错误:

double i = 1;
double pound;
System.out.println("Kilograms\t Pounds");
for(i = 1; i<199; i+=2){
pound = i * 2.2;
System.out.println(i + "\t\t" + pound + "\n");
}
Run Code Online (Sandbox Code Playgroud)

错误:

Kilograms     Pounds
1.0          2.2  
3.0          6.6000000005  
5.0          11.0  
7.0          15.400000002  

Pet*_*ter 5

我运行了这部分代码,我假设你引用了精度错误,例如获取数字398.20000000000005407.00000000000006不是398407.

这是由于表达式以浮点格式表示的数量的限制.有些数字可以用十进制格式表示,小数点后面的位数有限,但是不能用有限的精度以浮点格式表示,因此你会得到这些错误.

编辑

在您发布您定义为错误的内容之前,我写了我的答案.但没有什么不同.有关浮点精度损失的更多信息,请参阅此链接.

值得注意的是,当比较两个浮点数(已经计算)的"相等"时,你应该指定一个小值,或delta,这是两个数字之间的最大差异,允许它们被认为是相等的而不是测试绝对平等.