为什么十进制乘法稍微不准确?

jac*_*ill 3 python math

可能重复:
为什么浮点上的简单数学运算会返回意外(inacurate)导致VB.Net和Python?

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

>>> 
>>> 483.6 * 3
1450.8000000000002
>>> 
Run Code Online (Sandbox Code Playgroud)

我知道这种情况发生在其他语言中,我不会问如何解决这个问题.我知道你可以这样做:

>>> 
>>> from decimal import Decimal
>>> Decimal('483.6') * 3
Decimal('1450.8')
>>> 
Run Code Online (Sandbox Code Playgroud)

究竟是什么导致这种情况发生?为什么在做这样的数学运算时,小数会有些不准确?

有没有具体的原因计算机没有这个权利?

Kyl*_*yle 5

请参阅有关浮点数Python文档.基本上,当您创建浮点数时,您使用的是基数2算术.就像1/3是.333 ....进入无穷大,所以大多数浮点数不能在基数2中精确表示.因此你的结果.

Python解释器和其他一些语言之间的区别在于其他语言可能无法显示这些额外的数字.这不是Python中的错误,只是硬件如何使用浮点算法计算.

  • @ phant0m它呢?他给出了一个例子(1/3),所以我自己并没有真正看到这个建议. (2认同)