【问题标题】:why does sum of decimals still have floating point errors?为什么小数和仍然有浮点错误?
【发布时间】:2020-06-07 14:21:54
【问题描述】:

我使用小数模块来尽量避免浮点错误。从十进制模块的纪录片中说:

十进制数可以精确表示。相比之下,数字像 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】:

试着在你的浮点数周围加上字符串,像这样:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 2021-04-27
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多