如果已经提出要求,请道歉 - 不知道要搜索什么。
简单的代码:
double x = 4505;
double y = 1000;
double z = 1000000;
double result = (x * y) / z;
答案应为4.505;但我明白了:
result = 4.5049999999999999
x,y和z的值可以是任何值,有时我需要在结果中达到这种精确度,但我不明白为什么会发生这种情况。
问题如何删除舍入错误,以便我可以重新运行十进制值的进一步计算,而不会得到错误的结果,同时保持数字的高精度需要它。
答案 0 :(得分:1)
它只是Floating Point Rounding Error。还有this。
如果您希望result
四舍五入到小数点后3位,请使用:
result = floor(result * 1000.0) / 1000.0;
或仅在演示期间:
NSLog(@"result = %.3f", result);