2024-04-24 22:16:21 发布
网友
在一些简单的数学中,我试着从总数中得到目标的百分比。已经做的是积极的。在我的理解中,下面的数学应该给我一个50的百分比,但是运行它,Python坚持给我零。为什么会这样?在
Total = 2 Positives = 1 Percentage = (Positives/Total)*100 print ('Percentage is: ' + str(Stat) + '%\n' ) >>>Percentage is: 0%
在Python2中,除法运算符(/)如果两个参数都是整数,则返回一个int;如果其中至少一个参数是float,则返回float。在
/
print 1 / 2 # 0 print 1 / 2.0 # 0.5
可以使用from __future__ import division指令强制浮点除法。在
from __future__ import division
Python3默认启用浮点除法。在
另外,请注意,//运算符integer division在python2和python3中都存在,即使您没有from __future__ import division,并且始终返回一个整数。在
//
最后,请注意,我们讨论的是浮点数(http://en.wikipedia.org/wiki/IEEE_floating_point_number),而不是小数。如果您真的需要小数(速度较慢,但精度任意),请查看Python标准库中的decimal模块。在
decimal
要真正声明一个float,在它的末尾添加一个.0:
.0
>>>Total = 2.0 >>>Positives = 1.0 >>>Percentage = (Positives/Total)*100 >>>print Percentage 50.0
在Python2中,两个整数之间的除法返回一个整数。在除法中至少需要一个float才能使它返回一个float。在
如果将所有整数放入一个等式中,Python假定您需要一个整数作为结果。 (int/int==int),因此以下代码返回零:
>>> 1/2 0
如果要在结果中使用浮点,则需要确保其中一个输入变量是浮点: (int/float=float)或(float/int=float)
也可以使用强制转换来执行相同的操作:
>>> float(1)/2 0.5
并不是说在除法发生之前必须将其中一个变量更改为float,否则会得到意外的结果。以下命令将返回0的int(1)/int(2)除以,然后尝试将0转换为浮点:
>>> float(1/2) 0.0
在Python2中,除法运算符(
/
)如果两个参数都是整数,则返回一个int;如果其中至少一个参数是float,则返回float。在可以使用
^{pr2}$from __future__ import division
指令强制浮点除法。在Python3默认启用浮点除法。在
另外,请注意,
//
运算符integer division在python2和python3中都存在,即使您没有from __future__ import division
,并且始终返回一个整数。在最后,请注意,我们讨论的是浮点数(http://en.wikipedia.org/wiki/IEEE_floating_point_number),而不是小数。如果您真的需要小数(速度较慢,但精度任意),请查看Python标准库中的
decimal
模块。在要真正声明一个float,在它的末尾添加一个
.0
:在Python2中,两个整数之间的除法返回一个整数。在除法中至少需要一个float才能使它返回一个float。在
如果将所有整数放入一个等式中,Python假定您需要一个整数作为结果。
(int/int==int),因此以下代码返回零:
如果要在结果中使用浮点,则需要确保其中一个输入变量是浮点:
^{pr2}$(int/float=float)或(float/int=float)
也可以使用强制转换来执行相同的操作:
并不是说在除法发生之前必须将其中一个变量更改为float,否则会得到意外的结果。以下命令将返回0的int(1)/int(2)除以,然后尝试将0转换为浮点:
相关问题 更多 >
编程相关推荐