为什么我在excel表格里输入“=0.18-0.17”结果并不是0.01呢?
结果栏增加小数位后是0.00999999999999998。我感到特别奇怪,请高人解释一下。0.21-0.2也会出现这种结果。
你说的对,是这样的情况,但是,这不奇怪 ,这是浮点计算引起的误差。
由于excel是采取二进制存储数字的(在excel中浮点数分为三个部分,总长度为 65 位:符号、指数和尾数)。而某些十进制的有穷非循环数在二进制下是无穷的循环数,比如0.1。虽然这些数字在以 10 为底的情况下可以完美地表示,但相同数字在二进制格式下,在尾数中存储时就变成了以下二进制循环数字:
000110011001100110011(等类似数字)
excel在储存这些数字时,它在尾数中只存储能够容纳的部分,并截断其余部分。这导致在存储数字时产生大约 -2.8E-17 或 0.000000000000000028 的误差。
这个道理就象在十进制下无法准确地表示1/3一样,只能用循环小数 0.33333333333333333333来近似表示。
遇到这种情况怎么办?
遇到这种情况,有三种解决方案:
方案一:在公式中加round来四舍五入。
方案二:设置单元格格式。但是只能确定小数位数,不能四舍五入。
方案三:使用“将精度设为所显示的精度”选项。但是此选项要谨慎使用,会影响本工作簿所有的数值。
下一篇:win10系统更新失败
热门标签: