简单的 Excel 数学题错误

简单的 Excel 数学题错误

首先,我不想对数字进行四舍五入,我使用的是十进制数字,因此 Excel 可以轻松地进行简单的加减运算。

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

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

-4.999999999999770000000000000000

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

答案1

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

这没问题,除非您发现您需要高精度十进制数。计算机只能计算二分之一的幂,即 1/2、1/4、1/8、1/16、1/32 等。计算机很难在不牺牲大量性能的情况下完美准确地表示某些数字(例如 1/3 或 4.99)。

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

你说这是用于财务计算,你真的需要将最终结果显示到小数点后 20 位吗?或者你只需​​要确保计算足够精确,不会出现舍入误差。如果是后者,你可能只需要相信 Excel 已经为无数金融机构工作了几年,没有问题。而且你不必担心这些舍入误差会给你带来麻烦。

答案2

这个问题之前已经在这里回答过了。

仅仅因为您使用的是十进制“四舍五入”数字,这并没有帮助——计算机以二进制存储数字。您的十进制四舍五入数字转换为二进制数字,最终会重复,在将该十进制数转换回来时,您会丢失信息。

计算机用户可以通过两种方法解决这个问题:

1)将数学运算精确到小数点后几位,然后四舍五入到小数点后几位。2)使用 BCD 或其他精确的十进制表示形式。

据我所知,Excel 不使用 #2,因此请选择其他选项。

答案3

Excel 中有一个“显示精度”选项,可以有效地将数字自动四舍五入到您选择的显示数字的精度。

http://support.microsoft.com/kb/78113

但是不建议您这样做,因为这可能会在您的计算中引入舍入误差,因为您告诉 Excel 四舍五入到小数点后 2 位,而当前舍入误差是小数点后 15 位(左右),所以根本不会影响您的计算。

相关内容