MST

星途 面试题库

面试题:Python中浮点数运算误差常见场景及简单补偿策略

在Python中,写出一个浮点数运算导致明显误差的例子,并简述一种简单的误差补偿策略。例如计算0.1 + 0.2,结果并非预期的0.3,说明原因并给出一种修正方案。
48.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

浮点数运算误差例子

result = 0.1 + 0.2
print(result) 

上述代码输出结果并非0.3,而是0.30000000000000004。这是因为在计算机中,浮点数是以二进制形式存储的,而像0.10.2这样的十进制小数无法精确地用二进制表示,从而导致了运算误差。

简单的误差补偿策略

可以使用decimal模块来进行精确的十进制运算。示例如下:

from decimal import Decimal

result = Decimal('0.1') + Decimal('0.2')
print(result) 

这里使用Decimal类,将小数以字符串形式传入构造函数,这样可以避免因二进制存储带来的误差,输出结果为0.3