python如何存储小数位超过15位的小数

先来两个问题,再上解决方案

问题一:float类型最大可以保存多少位小数?

fl = 22.54511256621931347894946  # float的小数位最长为15位
print(fl)

问题二:使用Decimal模块保存超15的小数,为啥不精确?

from decimal import Decimal

fl = 22.54511256621931347894946  # float的小数位最长为15位
print(fl)   
fl = Decimal(fl)
print(fl)   # 保存的不够精确,答案在后面

结果:
在这里插入图片描述

解决方法

  • 还是用Decimal模块,但要注意,先将长小数转换成字符串,这样再Decimal()就不会丢失精度了;
  • 因为直接Decimal()长小数,python还是会默认先转成浮点型再转换成Decimal,所以会不精确
    解决
from decimal import Decimal, getcontext

fl = Decimal("22.54511256621931347894946")
print(fl)
print(type(fl))

python如何存储小数位超过15位的小数_第1张图片

你可能感兴趣的:(python学习,python,开发语言)