Excel 中相等但不同的值

Excel 中相等但不同的值

在 Excel 中,我有一个A1包含公式的单元格=1/(1/(1/(1.6-1)-1)-1)。结果显示为2,从数学上来说是正确的。但我知道浮点表示的优点...

现在当我检查单元格的值是否平等的2=A1=2),我得到TRUE。并<给出FALSE。但是当我减去 2( =A1-2),我得到-1.77635683940025E-15( -2^-49),所以一定是较少的2

屏幕截图(带有荷兰小数点分隔符和暗模式):

截屏

我希望这些检查能够一致。为什么不一致?是因为差异非规范化

这是错误还是功能?我发现一些文档但据我所知,它并不能解释这种不一致性。

我使用的是 Microsoft Excel 365 MSO (16.0.13001.20338) 64 位。我的文件可以从 Google Drive 下载。顺便说一下,谷歌确实显示了 0。

答案1

我找到了一些文献但据我所知它并不能解释这种不一致性。

我认为“示例:添加负数”涵盖了这一点:

  • 43.1-43.2 = -0.1 - 它已经无法正确存储,但仍然可以正确显示,与 A1 相同,它不完全是 2,但表现为 2
  • 当你在 Microsoft 示例中添加 1 或在你的示例中减去 2 时,错误就变得明显

这里的关键是 Excel 存储数字而不是小数。52 位比 15 位小数稍微精确一些,当差异小于 10^-15 时,它可能仍会被存储,但在显示或比较时都会四舍五入,但这会导致计算差异。

但这并不能解释为什么 Excel 认为 =2 为 TRUE

当您要求 Excel 将 2(十进制)与 A1 中的值(已存储为二进制)进行比较时,它首先需要转换其中一个数字。它将 A1 转换为十进制,这正好是 2精度为 15 位小数。(为什么它转换为十进制进行比较确实没有记录,我不知道原因)

相关内容