为什么Python返回0进行简单除法计算?

fen*_*itk 52 python

为什么这个简单的计算返回0

>>> 25/100*50  
0
Run Code Online (Sandbox Code Playgroud)

虽然这实际上正确计算?

>>> .25*50
12.5

>>> 10/2*2  
10
Run Code Online (Sandbox Code Playgroud)

第一个例子有什么问题?

Thi*_*ter 83

在Python 2中,25/100执行整数除法时为零.因为结果不到1.

您可以通过添加from __future__ import division到脚本来"修复"此问题.当使用/运算符并//用于整数除法时,这将始终执行浮点除法.

另一个选择是使至少一个操作数浮动,例如25.0/100.

在Python 3中,25/100总是如此0.25.


Lev*_*von 17

这是整数截断的问题(即,丢弃数字的任何小数部分).所以:

25 / 1000

但是,只要该除法中的至少一个操作数是浮点数,您将得到一个浮点结果:

 25 / 100.025.0 / 100  或25.0 / 100.0全部放弃0.25

  • 一种方法是将其中一个数乘以1.0.例如,`1.0*x/2`或者你可以做'浮动(x)/ 2` - 可能还有其他方法,但这些让我想起了我的头脑.在程序中对代码进行编码之前,您始终可以以交互方式验证结果.希望有所帮助. (4认同)