Max Asked:2020-12-25 05:01:07 +0000 UTC2020-12-25 05:01:07 +0000 UTC 2020-12-25 05:01:07 +0000 UTC 浮点数之和 772 尝试计算数字的总和时,我注意到以下行为:从这个答案 0.7 + 0.2 + 0.1 = 0.99999999... 中可以清楚地看出为什么会发生这种情况。 如果您需要正确的答案,该怎么办?在这种情况下:0.7 + 0.2 + 0.1 = 1 这个问题的解决方案是什么? javascript 2 个回答 Voted Best Answer BolT-007 2020-12-25T12:28:40Z2020-12-25T12:28:40Z 计算错误很难避免(大量数字跳舞)。 计算后四舍五入会更好。如果我们只想看到一个整数,你可以四舍五入到整数。 Math.round 但是如果我们期望看到一个小数,这个方法就行不通了,你需要使用四舍五入到一个合理的小数位。舍入到小数点后 10 位通常足以切断计算误差,仍能获得所需的计算精度: (0.1 + 0.2).toFixed(10) 但是这里我们得到了字符串类型,我们需要修改它 parseFloat 总之,四舍五入可以这样完成: parseFloat((0.1 + 0.2+0.7).toFixed(10)); Eugene Bartosh 2020-12-25T12:51:24Z2020-12-25T12:51:24Z 将所有数字乘以 10,四舍五入并相加。然后将结果除以 10: (Math.round(n1*10) + Math.round(n2*10) + ... + Math.round(nn*10)) / 10
计算错误很难避免(大量数字跳舞)。
计算后四舍五入会更好。如果我们只想看到一个整数,你可以四舍五入到整数。
但是如果我们期望看到一个小数,这个方法就行不通了,你需要使用四舍五入到一个合理的小数位。舍入到小数点后 10 位通常足以切断计算误差,仍能获得所需的计算精度:
但是这里我们得到了字符串类型,我们需要修改它
总之,四舍五入可以这样完成:
将所有数字乘以 10,四舍五入并相加。然后将结果除以 10: