为什么小数和仍然仍然存在浮点错误?

问题描述 投票:1回答:1

Im使用小数模块来尝试避免浮点错误。在十进制模块的记录片中显示:

小数可以精确表示。相反,像1.1和2.2在二进制浮点数中没有确切的表示形式。最终用户通常不希望1.1 + 2.2显示为3.3000000000000003,就像处理二进制浮点一样。

但是当我尝试用小数求和时,我仍然会得到那些浮点错误。

decimal.Decimal(4.04)+decimal.Decimal(4.04)
>>Decimal('8.080000000000000071054273576')

这是为什么?

python-3.x floating-point decimal
1个回答
1
投票

尝试将字符串放在浮点文字周围,如下所示:

decimal.Decimal('4.04')+decimal.Decimal('4.04')

在您问题的代码中,原始二进制(基数2)"float"类型传递给Decimal。例如,当您使用字符串表示数字4.04时,Decimal恰好以10为底表示'4.04'

© www.soinside.com 2019 - 2024. All rights reserved.