我的一个同事给我发了他们的 Excel 表,让我看一下。问题在于,对于一个非常具体的数字 (56136.598),Excel 会自动将该数字外推到小数点后 10 位,而不管格式选项如何。
单元格将数字显示到正确的 3 个小数位,但如果您查看公式栏中的数字,它会显示所有 10 个小数位。如果我编写公式 =round(56136.598,3)
,它甚至会将数字更改为小数点后 10 位。至=round(56136.5979999999,3)
.
不幸的是,鉴于我所在的行业,我需要解释一下为什么这个非常具体的数字会导致这种变化。仅使用 round 或 trunc 函数将其截断到小数点后 3 位是不够的,这个数字和这个单元格的设置与其他并行单元格计算的设置不同,这一事实引起了一些批评。有没有人遇到过这个?我已经在 Excel 2010 和 2019 以及新工作表中尝试过,同样的问题。似乎 excel 拒绝接受小数点后 3 位的数字,并自行强制扩展至小数点后 10 位。
最佳答案
这是正常行为。见下图,我刚输入 56136,598
进入细胞。
这是因为 Excel 是一个数值计算程序而不是代数程序。所以这是一个精度问题。另见 Numeric precision in Microsoft Excel .
Excels 结果不是绝对的,但非常接近正确。这些与数字之间的差异几乎为 0(差异为 0,0000000001
)。
这实际上也是最常见的计算器的行为方式(你只是没有看到)。这只是计算器(和计算机)工作方式的本质。
所以没有什么可担心的。
更多信息:Understanding Floating Point Precision, aka “Why does Excel Give Me Seemingly Wrong Answers?”
关于尽管格式选项甚至在公式中,Excel 都会将 3 个十进制数字更改为完整数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60775349/