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
我运行了这部分代码,我假设你引用了精度错误,例如获取数字398.20000000000005而407.00000000000006不是398和407.
这是由于表达式以浮点格式表示的数量的限制.有些数字可以用十进制格式表示,小数点后面的位数有限,但是不能用有限的精度以浮点格式表示,因此你会得到这些错误.
编辑
在您发布您定义为错误的内容之前,我写了我的答案.但没有什么不同.有关浮点精度损失的更多信息,请参阅此链接.
值得注意的是,当比较两个浮点数(已经计算)的"相等"时,你应该指定一个小值,或delta,这是两个数字之间的最大差异,允许它们被认为是相等的而不是测试绝对平等.
| 归档时间: |
|
| 查看次数: |
2089 次 |
| 最近记录: |