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

举报
彭世瑜 发表于 2021/08/14 00:34:26 2021/08/14
【摘要】 浮点型加法 0.1+0.2 Out[15]: 0.30000000000000004 12 decimal定点数加法 import decimal decimal.Decimal(0.1) + decimal.Decimal(0.2) Out[17]: Decimal('0.3000000000000000166533453694') # 设置精度 decim...

浮点型加法

0.1+0.2
Out[15]: 0.30000000000000004

  
 
  • 1
  • 2

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')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

定点数传入字符串做计算

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

  
 
  • 1
  • 2
  • 3

可以看到:

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

参考

  1. decimal — Decimal fixed point and floating point arithmetic¶
  2. decimal模块

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/84822109

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。