您当前的位置: 首页 >  彭世瑜 Python

Python编程:使用decimal定点数计算0.1+0.2

彭世瑜 发布时间:2018-12-05 10:32:32 ,浏览量:1

浮点型加法

0.1+0.2
Out[15]: 0.30000000000000004

decimal定点数加法

import decimal

decimal.Decimal(0.1) + decimal.Decimal(0.2)
Out[17]: Decimal('0.3000000000000000166533453694')

# 设置精度
decimal.getcontext().prec = 6

decimal.Decimal(0.1) + decimal.Decimal(0.2)
Out[20]: Decimal('0.300000')

decimal传入浮点型计算

from decimal import *

d1 = Decimal(0.1) + Decimal(0.2)
print(d1)
# 0.3000000000000000166533453694

d2 = Decimal.from_float(0.1) + Decimal.from_float(0.2)
print(d2)
# 0.3000000000000000166533453694

# 格式化
print(d1.quantize(Decimal("0.00")))  # 0.30
print(d2.quantize(Decimal("0.00")))  # 0.30

定点数传入字符串做计算

d3 = Decimal("0.1") + Decimal("0.2")
print(d3)
# 0.3

可以看到:

  • 浮点数本身计算的时候是不准确的,
  • 即便转换为decimal之后也不准确,
  • 比较好的方法是通过传入字符串做计算

参考

  1. decimal — Decimal fixed point and floating point arithmetic¶
  2. decimal模块
关注
打赏
1688896170
查看更多评论

彭世瑜

暂无认证

  • 1浏览

    0关注

    2727博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1033s