首先,我不想对数字进行四舍五入,我使用的是十进制数字,因此 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 位(左右),所以根本不会影响您的计算。