简单的excel数学错了

2 microsoft-excel

首先,我不想四舍五入我的数字,我使用基数为 10 的数字,所以 excel 应该没有麻烦做简单的加减法。

A|  665.110000000000000000000000000000
B|  4.990000000000000000000000000000
C|  =a1+b1
D|  670.790000000000000000000000000000
E|  1,335.890000000000000000000000000000
F|  =e1-(c1+d1)
Run Code Online (Sandbox Code Playgroud)

我应该得到 -5 但是 F1 返回

-4.999999999999770000000000000000
Run Code Online (Sandbox Code Playgroud)

这是一份财务文件,因此我想避免四舍五入,更重要的是。为什么我需要?我已经将单元格格式设置为带有 2 个小数的货币,我将获得正确的显示值,但对于所有计算,我仍然会得到 -4.9999...7,这会导致条件格式等进一步错误。

Ste*_*ner 6

问题出在几乎所有计算机的基本硬件上。它们基于二进制系统,因此它们不从 0 数到 9,而是只计算 0 和 1,或以 2 为基数。

这很好,除非你发现你想要高精度的十进制数。计算机只能用半数的幂的分数来计算,即 1/2、1/4、1/8、1/16、1/32 等。计算机没有简单的方法来表示一些数字,例如作为 1/3 或 4.99 完全准确,而不会放弃很多性能。

Excel 非常擅长隐藏这个事实,只有当你打开 20 个左右的小数位时,你才会看到这个错误。它通过四舍五入来实现这一点,但仅在显示结果时进行四舍五入。

你说这是为了财务计算,你真的需要将最终结果显示到小数点后20位吗?或者您是否只需要确保以足够的精度完成计算,从而不会发生舍入错误。如果是后者,您可能只需要相信 excel 几年来一直在为无数金融组织做它的工作,没有问题。而且您不必担心那些会导致问题的舍入错误。