首页 > 电脑

为什么我在excel表格里输入“=0.18-0.17”结果并不是0.01呢?

更新时间2018-04-28 15:10:36

结果栏增加小数位后是0.00999999999999998。我感到特别奇怪,请高人解释一下。0.21-0.2也会出现这种结果。

你说的对,是这样的况,但是,这不奇怪 ,这是浮点计算引起的误差。

为什么我在excel表格里输入“=0.18-0.17”结果并不是0.01呢?

由于excel是采取二进制存储数字的(在excel中浮点数分为三个部分,总长度为 65 位:符号、指数和尾数)。而某些十进制的有穷非循环数在二进制下是无穷的循环数,比如0.1。虽然这些数字在以 10 为底的况下可以完美地表示,但相同数字在二进制格式下,在尾数中存储时就变成了以下二进制循环数字:

000110011001100110011(等类似数字)

excel在储存这些数字时,它在尾数中只存储能够容纳的部分,并截断其余部分。这导致在存储数字时产生大约 -2.8E-17 或 0.000000000000000028 的误差。

这个道理就象在十进制下无法准确地表示1/3一样,只能用循环小数 0.33333333333333333333来近似表示。

遇到这种情况怎么办?

遇到这种情况,有三种解决方案:

方案一:在公式中加round来四舍五入。

方案二:设置单元格格式。但是只能确定小数位数,不能四舍五入。

方案三:使用“将精度设为所显示的精度”选项。但是此选项要谨慎使用,会影响本工作簿所有的数值。


相关标签:excel

上一篇:为什么我打开一个图片以后桌面图片全部变成了快捷方式

下一篇:win10系统更新失败