Python | Decimal | 小数计算误差(浮点数计算精度丢失)
文章目录
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