Python如何计算数字?

2 python

可能重复:
python - 带浮点数的小数位

在[4]中:52 + 121.2

出[4]:173.19999999999999

Ada*_*eld 22

简短回答:Python对浮点数使用二进制算术,而不是十进制算术.十进制分数不能用二进制表示.

答案很长:每个计算机科学家应该知道浮点运算


Jon*_*ess 8

如果您熟悉数字"十三点二"在十进制中写为"13.2"的想法,因为它是"10 ^ 1*1 + 10 ^ 0*3 + 10 ^ -1*2"然后尝试对于数字173.2,使用2而不是10的基数做同样的事情.

这是整个部分:(1*2 ^ 7)+(0*2 ^ 6)+(1*2 ^ 5)+(0*2 ^ 4)+(1*2 ^ 3)+(1*2 ^ 2)+(0*2 ^ 1)+(0*2 ^ 0)

现在这里是起始小数部分:(0*2 ^ -1)+(0*2 ^ -2)+(1*2 ^ -3)

那是.125,还不到2/10,所以我们需要更多的形式(1*2 ^ -n),我们可以用(1*2 ^ -4)+进一步实现这一点( 1*2 ^ -7),这让我们更接近......到0.1953125,但无论我们做多久,我们都永远不会达到".2",因为".2"不能表示为加法形式的数量之和(1*2 ^ -n).

另见.9999 ... = 1.0(http://en.wikipedia.org/wiki/0.999 ..)


Mar*_*ton 7

试试这个:

>>> from decimal import Decimal
>>> Decimal("52") + Decimal("121.2")
Decimal("173.2")
Run Code Online (Sandbox Code Playgroud)