向所有超级用户问好!
我想问一下我今天发现的一个有趣的事情,与 excel 中四舍五入中的求和函数有关。我有以下一组数字(它们四舍五入到小数点后几位 - 每个数字后面没有其他小数):
0.140495867768595,
0.173553719008264,
0.206611570247934,
0.076741440377804,
0.0826446280991736,
0.118063754427391,
0.063754427390791,
0.0814639905548997,
0.0566706021251476,
当我在 Excel 中执行一个简单的求和函数时,结果等于 1.000000000000000000,但是当我将这些数字放入计算器中时,结果等于 0.99999999999999999(这是正确的)-> 因此,我的问题是,有没有办法设置 Excel 的行为以正确计算,为什么计算错误?提前感谢大家的建议!
答案1
Excel 数字值的精度为 15 位。第 15 位之后的所有内容都将显示为 0。
解决方法:如果要显示超过 16 位有效数字,则需要以文本形式输入值,即以单引号开头,然后输入该值。
答案2
Excel 存储 15 位有效数字的精度。因此,列表中的第五个值 -- 0.0826446280991736
,将被视为0.082644628099174
总和。列表中的第八和第九个值也是如此。
看https://www.microsoft.com/en-us/microsoft-365/blog/2008/04/10/understanding-floating-point-precision-aka-why-does-excel-give-me-seemingly-wrong-answers/有关 Excel 如何存储数字的更多信息。
答案3
Excel 仅存储15 位有效数字精度。任何超过 15 位有效数字的数值都将圆形。
因此,结果0.9999999999999999
四舍五入为1.00000000000000
,即1
。
Input Sum (by Excel) Sum (Actual)
----------------------- ---------------------- -----------------------
0.140495867768595 [15] 0.140495867768595 [15] 0.140495867768595 [15]
0.173553719008264 [15] 0.314049586776859 [15] 0.314049586776859 [15]
0.206611570247934 [15] 0.520661157024793 [15] 0.520661157024793 [15]
0.076741440377804 [14] 0.597402597402597 [15] 0.597402597402597 [15]
0.0826446280991736 [15] 0.680047225501771 [15] 0.6800472255017706 [16]
0.118063754427391 [15] 0.798110979929162 [15] 0.7981109799291616 [16]
0.063754427390791 [14] 0.861865407319953 [15] 0.8618654073199526 [16]
0.0814639905548997 [15] 0.943329397874852 [15] 0.9433293978748523 [16]
0.0566706021251476 [15] 1.00000000000000 [15] 0.9999999999999999 [16]
0.000000000000001 [ 1] 1.00000000000000 [15] 1.0000000000000009 [17] <-- Bonus info
[ ] = number of significant digits
奖励:即使你再添加一位0.000000000000001
(小数点后第 15 位),结果仍然是1
。
参考:https://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel