【问题标题】:Python floating point arithemetic basicsPython浮点算术基础
【发布时间】:2015-02-28 21:18:18
【问题描述】:

正如预期的那样,由于其有限的精度,Python 的浮点乘法不能分配给加法:

In [10]: 200 * 0.1 + 200 * 0.2
Out[10]: 60.0

In [11]: 200 * (0.1 + 0.2)
Out[11]: 60.00000000000001

加法不是关联的:

In [12]: 1e14 + (48.18 + 18.26)
Out[12]: 100000000000066.44

In [13]: (1e14 + 48.18) + 18.26
Out[13]: 100000000000066.45

但是加法是可交换的吗?乘法?

【问题讨论】:

标签: python floating-point arithmetic-expressions


【解决方案1】:

是的,加法和乘法是可交换的(结果是 NaN 时除外,但那是因为 NaN != NaN。在这种情况下,加法和乘法产生相同的结果,只是这个结果不等于自身)。

有限浮点值的加法和乘法都定义为最接近相应运算的数学结果的浮点值。 即分别为 rn(a + b) 和 rn(a * b)。

这些定义是可交换的,因为 a + b = rn(a + b) = rn (b + a) = b + a(对于乘法也是如此)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多