Python 浮点算术基础知识

标签 python floating-point arithmetic-expressions

正如预期的那样,由于其有限精度,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

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

最佳答案

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

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

这些定义是可交换的,因为 a + b = rn(a + b) = rn (b + a) = b + a (乘法也类似)。

关于Python 浮点算术基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27743900/

相关文章:

python - 在 CSS 文件中使用 Django 变量

Python NetworkX - 为什么图形总是随机旋转?

python - 从具有给定长度和宽度的字符串创建二维列表

javascript - 如何将字符串值转换为数字以进行精确计算? Javascript

c - C 中的整数溢出是如何工作的?

java - 在 JAVA Netbeans 中的 SQL 算术语句中使用变量/JAVA 函数

jquery - 用于执行类似 jQuery 的文本提取的 Python 库?

math - 处理 Go 算术中的 float 精度?

c# - Float/Float = 奇怪的结果

xslt - 增加 xslt 中的整数