面试题答案
一键面试浮点数运算误差例子
result = 0.1 + 0.2
print(result)
上述代码输出结果并非0.3
,而是0.30000000000000004
。这是因为在计算机中,浮点数是以二进制形式存储的,而像0.1
和0.2
这样的十进制小数无法精确地用二进制表示,从而导致了运算误差。
简单的误差补偿策略
可以使用decimal
模块来进行精确的十进制运算。示例如下:
from decimal import Decimal
result = Decimal('0.1') + Decimal('0.2')
print(result)
这里使用Decimal
类,将小数以字符串形式传入构造函数,这样可以避免因二进制存储带来的误差,输出结果为0.3
。