Python:由更大的数字划分

alp*_*ric 1 python

print 1/50
Run Code Online (Sandbox Code Playgroud)

结果为舍入零:0

print float(1/50)
Run Code Online (Sandbox Code Playgroud)

再次返回零但是作为一个浮点数.

我应该使用什么语法来仅使用stock模块获得正确的结果(0.02).

mhl*_*ter 6

这一行:

print float(1/50)
Run Code Online (Sandbox Code Playgroud)

执行1/50的整数除法,然后将其转换为浮点数.这是错误的顺序,因为整数除法已经丢失了小数值.

你需要在分裂之前首先以下列方式之一投射到浮动:

float(1)/50
1./50
Run Code Online (Sandbox Code Playgroud)


Val*_*ntz 6

在编写时print float(1/50),Python首先计算1/50(即.0)的值,然后将其转换为浮点数.这显然不是你想要的.

以下是一些方法:

>>> print float(1)/50
0.02
>>> print 1/float(50)
0.02
>>> print float(1)/float(50)
0.02
>>> print 1./50
0.02
>>> print 1/50.
0.02
>>> print 1./50.
0.02
Run Code Online (Sandbox Code Playgroud)


kwa*_*ord 6

或者:

>>> from __future__ import division
>>> 1/50
0.02
Run Code Online (Sandbox Code Playgroud)

这在Python 3中默认启用