Excel 将 3 位小数更改为完整数字,尽管有格式选项,甚至在公式中也是如此
Excel changes a 3 decimal number to full number despite formatting options and even in a formula
我的一个同事给我发了他们的 Excel sheet 并让我看一下。问题是对于一个非常具体的数字 (56136.598),Excel 会自动将该数字外推到小数点后 10 位,而不管格式选项如何。
该单元格显示的数字精确到小数点后 3 位,但如果您查看编辑栏中的数字,它会显示所有 10 位小数。如果我将公式 =round(56136.598,3)
写成 =round(56136.5979999999,3)
,它甚至会将数字更改为小数点后 10 位。
不幸的是,考虑到我所处的行业,我需要一些解释来解释为什么这个非常具体的数字会导致这种变化。仅仅使用 round 或 trunc 函数将其保留在小数点后 3 位是不够的,这个数字和这个单元格的设置与其余的并行单元格计算不同这一事实引起了一些批评。有人 运行 以前参与过这个吗?我曾在 Excel 2010 年和 2019 年以及新作品 sheet 中尝试过,同样的问题。似乎 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 sheet 并让我看一下。问题是对于一个非常具体的数字 (56136.598),Excel 会自动将该数字外推到小数点后 10 位,而不管格式选项如何。
该单元格显示的数字精确到小数点后 3 位,但如果您查看编辑栏中的数字,它会显示所有 10 位小数。如果我将公式 =round(56136.598,3)
写成 =round(56136.5979999999,3)
,它甚至会将数字更改为小数点后 10 位。
不幸的是,考虑到我所处的行业,我需要一些解释来解释为什么这个非常具体的数字会导致这种变化。仅仅使用 round 或 trunc 函数将其保留在小数点后 3 位是不够的,这个数字和这个单元格的设置与其余的并行单元格计算不同这一事实引起了一些批评。有人 运行 以前参与过这个吗?我曾在 Excel 2010 年和 2019 年以及新作品 sheet 中尝试过,同样的问题。似乎 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?”