print 1/50
Run Code Online (Sandbox Code Playgroud)
结果为舍入零:0
print float(1/50)
Run Code Online (Sandbox Code Playgroud)
再次返回零但是作为一个浮点数.
我应该使用什么语法来仅使用stock模块获得正确的结果(0.02).
这一行:
print float(1/50)
Run Code Online (Sandbox Code Playgroud)
执行1/50的整数除法,然后将其转换为浮点数.这是错误的顺序,因为整数除法已经丢失了小数值.
你需要在分裂之前首先以下列方式之一投射到浮动:
float(1)/50
1./50
Run Code Online (Sandbox Code Playgroud)
在编写时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)
或者:
>>> from __future__ import division
>>> 1/50
0.02
Run Code Online (Sandbox Code Playgroud)
这在Python 3中默认启用