python - 为什么十进制乘法有点不准确?

标签 python math

<分区>

Possible Duplicate:
Why do simple math operations on floating point return unexpected (inacurate) results in VB.Net and Python?

为什么在 Python 中会发生这种情况:

>>> 
>>> 483.6 * 3
1450.8000000000002
>>> 

我知道在其他语言中也会出现这种情况,我不是在问如何解决这个问题。我知道你可以:

>>> 
>>> from decimal import Decimal
>>> Decimal('483.6') * 3
Decimal('1450.8')
>>> 

那么究竟是什么导致了这种情况的发生呢?为什么像这样进行数学运算时小数点会变得稍微不准确?

是否有任何特定原因导致计算机无法正确执行此操作?

最佳答案

参见 Python documentation on floating point numbers .本质上,当您创建 float 时,您使用的是 base 2 算术。正如 1/3 是 .333.... 无穷大,所以大多数 float 不能精确地以 2 为基数表示。因此你的结果。

Python 解释器与其他一些语言的区别在于,其他语言可能不会显示这些额外的数字。这不是 Python 中的错误,而是硬件如何使用浮点运算进行计算。

关于python - 为什么十进制乘法有点不准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368893/

相关文章:

python - Web2Py 中的每次调用都会解释代码吗?

math - 与常规数学坐标系相比,为什么软件通常使用反坐标系?

c - 在 "C Programming: A modern Approach"中练习

python - 在python文件中使用像 'ë'和 'ç'这样的字符

python - 使用 id Mechanize 选择表单

python - python中的前缀符号解析

algorithm - 数组保持不变的概率是多少?

c++ - 是什么导致该张量外积中出现无限模板递归?

python - 使用 python-3.x 从 zip 存档中读取 CSV 文件

python - 如何隐藏 Openpyxl 中的列?