问题:我用Python在数学计算中看到计算机什么时候做近似
问题示例:
我的老老师曾经说过下面的话
You cannot never calculate 200! with your computer.
现在我不完全确定这是否属实。 似乎是这样,因为我从 Python script 中得到了很多零.
如何查看 Python 代码何时进行了近似?
请您参考如下方法:
Python 使用arbitrary-precision arithmetic用整数来计算,所以它可以精确地计算出 200!。对于实数(所谓的 floating-point ),Python 不使用精确表示。它使用称为 IEEE 754 的二进制表示,本质上是科学记数法,除了以 2 为基数而不是以 10 为基数。
因此,任何不能以 53 位精度以 2 为基数精确表示的实数,Python 都无法产生精确的结果。比如0.1(以10为底)是一个以2为底的无限小数,0.0001100110011...,所以不能精确表示。因此,如果您在 Python 提示符下输入:
>>> 0.1
0.10000000000000001
你得到的结果是不同的,因为已经从十进制转换为二进制(53位精度),回到十进制。结果,你得到这样的东西:
>>> 0.1 + 0.2 == 0.3
False
要获得良好(但较长)的阅读,请参阅 What Every Programmer Should Know About Floating-Point Arithmetic .
