Python | Decimal | 小数计算误差(浮点数计算精度丢失)
简介
- 编程语言中,浮点数(小数)四则运算总会出现一些与预期不符的情况,究其原因是因为计算机以二进制方式存储数据,对于小数的运算有天然的缺陷,计算机只能以极大限度的进行近似取值,于是精度问题就出现了。
- Python中,小数加减法出现的精度问题非常常见,一般使用
decimal
模块进行处理,因为decimal.Decimal
是基于字符串进行处理的,所以在使用时一定注意前期转换为字符串,后期转换会对应的浮点类型。
问题举例
sum_amount1 = 245.6+333.3+123.3
sum_amount2 = sum([245.6+333.3+123.3])
解决方案
from decimal import Decimal
sum_amount1 = float(Decimal(245.6) + Decimal(333.3) + Decimal(123.3))
sum_amount2 = float(sum(map(Decimal, [245.6, 333.3, 123.3])))
🎉如果对你有所帮助,可以点赞、关注、收藏起来,不然下次就找不到了🎉
【点赞】⭐️⭐️⭐️⭐️⭐️
【关注】⭐️⭐️⭐️⭐️⭐️
【收藏】⭐️⭐️⭐️⭐️⭐️
Thanks for watching.
–Kenny