面试题答案
一键面试浮点数精度陷阱场景:简单数学运算
在Python中,浮点数在进行简单数学运算时可能出现精度问题。例如:
a = 0.1
b = 0.2
print(a + b)
预期结果应该是0.3,但实际输出为 0.30000000000000004
。这是因为浮点数在计算机中以二进制表示,而像0.1、0.2这样的小数无法精确地用二进制表示,从而导致运算结果存在微小误差。
解决浮点数精度问题的常用方法及适用场景
- 使用
decimal
模块- 方法:
decimal
模块提供了一种用于十进制浮点数运算的方法,能够精确控制运算精度。
from decimal import Decimal a = Decimal('0.1') b = Decimal('0.2') print(a + b)
- 适用场景:适用于对精度要求极高的场景,如金融领域的货币计算、科学计算等,这些场景不允许出现任何精度误差。
- 方法:
- 使用
round
函数- 方法:
round
函数可以对浮点数进行四舍五入操作,将结果保留到指定的小数位数。
a = 0.1 b = 0.2 result = round(a + b, 1) print(result)
- 适用场景:适用于对精度要求不是特别高,且结果允许有一定近似程度的场景,如日常数据展示,在这种场景下可以接受一定程度的舍入误差来简化数据表示。
- 方法: