如何使简单的十进制算术正确?

2024-05-16 09:11:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道计算小数对计算机来说不是一件容易的事,但是有没有什么方法可以用python完成简单的算术呢?最好的方法是什么?你知道吗

>>> 0.3 + 0.3 + 0.3 + 0.1 != 1
True
>>> from decimal import Decimal
>>> Decimal(0.3) + Decimal(0.3) + Decimal(0.3) + Decimal(0.1) != 1
True
>>> Decimal(0.3) + Decimal(0.3) + Decimal(0.3) + Decimal(0.1) != Decimal(1)
True
>>> Decimal(0.3) + Decimal(0.3) + Decimal(0.3) + Decimal(0.1)
Decimal('0.9999999999999999722444243843')

更新:

正如建议的那样,解决方案是使用Decimal()和字符串而不是普通数字。但我发现这个解决方案非常不令人满意(非肾盂和丑陋)。真的没有别的办法吗?(也许是用装饰师?)你知道吗


Tags: 方法字符串fromimporttrue计算机数字算术
1条回答
网友
1楼 · 发布于 2024-05-16 09:11:05

当您写入Decimal(0.3)时,您使用的是一个浮点值0.3,该值会出现精度错误。你知道吗

>>> Decimal(0.3)
Decimal('0.299999999999999988897769753748434595763683319091796875')

使用字符串完全避免浮点运算。你知道吗

>>> Decimal('0.3') + Decimal('0.3') + Decimal('0.3') + Decimal('0.1')
Decimal('1.0')

相关问题 更多 >