首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

这是不是python的bug,该如何解决

2012-05-02 
这是不是python的bug做运算的时候发现python把1/28.0计算错了1/28.0计算下来应该是个循环小数吧0.03(57142

这是不是python的bug
做运算的时候发现python把1/28.0计算错了

1/28.0计算下来应该是个循环小数吧
0.03(571428)
括号里面是循环小数
可是python这样计算下来居然不循环,害死我了啊,找了半天bug,居然在这里

Python code
>>> decimal.Decimal(1/28.0)Decimal('0.03571428571428571230317317031222046352922916412353515625')

求高人指点python中怎样做才能准确无误的计算

[解决办法]
csdn说我贴的这些语句里有非法字符,只好截个图发一下了。

[解决办法]
不对的那个应该是先进行了实点数运算才转换成Decimal的吧,进行运算时结果已经不精确了,再转换成Decimal就是那个不精确的结果了。大概是这样吧
[解决办法]
用浮点浮点起实例,只有2进制能完美对应的时候才行,所以一般小数都是用字串吧...
>>> from decimal import *
>>> Decimal(1.25) # 侥幸是个2进制刚好能表示的
Decimal('1.25')
>>> Decimal(3.14) # 出差错了
Decimal('3.140000000000000124344978758017532527446746826171875')
>>> Decimal('3.14') # 小数用字串才对
Decimal('3.14')
>>> getcontext().prec = 64
>>> Decimal(1)/28
Decimal('0.03571428571428571428571428571428571428571428571428571428571428571')
>>>

热点排行