无法在数学计算中看到Python的近似值

Léo*_* 준영 1 python

问题:当我使用Python时,看看计算机何时在数学计算中进行近似

问题示例:

我的老教师曾经说过以下陈述

You cannot never calculate 200! with your computer. 
Run Code Online (Sandbox Code Playgroud)

我现在还不完全确定它是否真实.它似乎是,因为我从Python脚本得到了很多零.

你怎么知道你的Python代码何时进行近似?

Ada*_*eld 7

Python使用任意精度算术来计算整数,因此它可以精确地计算200!.对于实数(所谓的浮点数),Python不使用精确表示.它使用称为IEEE 754的二进制表示,它基本上是科学记数法,除了基数2而不是基数10.

因此,任何不能在基数2中以53位精度精确表示的实数,Python都无法产生精确的结果.例如,0.1(在基数10中)是基数2中的无限小数,0.0001100110011 ...,因此无法准确表示.因此,如果您在Python提示符下输入:

>>> 0.1
0.10000000000000001
Run Code Online (Sandbox Code Playgroud)

你得到的结果是不同的,因为已经从十进制转换为二进制(具有53位精度),返回到十进制.结果,你得到这样的事情:

>>> 0.1 + 0.2 == 0.3
False
Run Code Online (Sandbox Code Playgroud)

对于一个好的(但很长的)读取,请参阅每个程序员应该知道的关于浮点运算的内容.