为什么Python将变量视为整数,而不允许小数?

为什么Python将变量视为整数,而不允许小数?,python,Python,在一些简单的数学中,我试图从总数中得到已经完成的目标的百分比。所做的是积极的。在我的理解中,下面的数学应该给我一个50的百分比,但是运行它时,Python坚持给我零。为什么会这样 Total = 2 Positives = 1 Percentage = (Positives/Total)*100 print ('Percentage is: ' + str(Stat) + '%\n' ) >>>Percentage is: 0% 要按字面意思声明浮点,请在其末尾添加一个.

在一些简单的数学中,我试图从总数中得到已经完成的目标的百分比。所做的是积极的。在我的理解中,下面的数学应该给我一个50的百分比,但是运行它时,Python坚持给我零。为什么会这样

Total =  2
Positives = 1
Percentage = (Positives/Total)*100
print ('Percentage is: ' + str(Stat) + '%\n' )

>>>Percentage is: 0%

要按字面意思声明浮点,请在其末尾添加一个
.0

>>>Total =  2.0
>>>Positives = 1.0
>>>Percentage = (Positives/Total)*100
>>>print Percentage
50.0

在Python2中,两个整数之间的除法返回一个整数。分区中至少需要一个浮点数才能使其返回浮点数。

要真正声明浮点数,请在其末尾添加一个
.0

>>>Total =  2.0
>>>Positives = 1.0
>>>Percentage = (Positives/Total)*100
>>>print Percentage
50.0

在Python2中,两个整数之间的除法返回一个整数。除法中至少需要一个浮点数才能使其返回浮点数。

在Python 2中,如果两个参数都是整数,则除法运算符(
/
)返回int;如果至少一个参数是浮点数,则返回float

print 1 / 2   # 0
print 1 / 2.0 # 0.5
您可以使用
from\uuuuu future\uuuu import division
指令强制浮点除法

from __future__ import division
print 1 / 2  # 0.5
print 1 // 2 # 0 (// is always integer division)
Python3默认启用浮点除法

另外,请注意,
/
运算符integer division在Python2和Python3中都存在,即使您没有来自未来导入division的
,并且始终返回整数


最后,请注意,我们这里讨论的是浮点数(),而不是小数。如果确实需要小数(速度较慢,但精度任意),请查看Python标准库中的
decimal
模块。

在Python 2中,如果两个参数都是整数,则除法运算符(
/
)返回int;如果至少一个参数是浮点,则返回float

print 1 / 2   # 0
print 1 / 2.0 # 0.5
您可以使用
from\uuuuu future\uuuu import division
指令强制浮点除法

from __future__ import division
print 1 / 2  # 0.5
print 1 // 2 # 0 (// is always integer division)
Python3默认启用浮点除法

另外,请注意,
/
运算符integer division在Python2和Python3中都存在,即使您没有来自未来导入division的
,并且始终返回整数


最后,请注意,我们这里讨论的是浮点数(),而不是小数。如果确实需要小数(速度较慢,但精度任意),请查看Python标准库中的
decimal
模块。

如果将所有整数放入一个等式中,Python会假定您需要整数作为结果。
(int/int==int)因此以下代码返回零:

>>> 1/2
0 
如果要在结果中使用浮点,则需要确保输入变量之一为浮点:
(int/float=float)或(float/int=float)

您还可以使用强制转换执行相同的操作:

>>> float(1)/2
0.5
并不是说在除法发生之前必须将其中一个变量更改为浮点,否则会得到意外的结果。以下命令将int(1)/int(2)分开,返回0,然后尝试将0转换为浮点:

>>> float(1/2)
0.0

如果将所有整数放入一个等式中,Python会假定结果是一个整数。
(int/int==int)因此以下代码返回零:

>>> 1/2
0 
如果要在结果中使用浮点,则需要确保输入变量之一为浮点:
(int/float=float)或(float/int=float)

您还可以使用强制转换执行相同的操作:

>>> float(1)/2
0.5
并不是说在除法发生之前必须将其中一个变量更改为浮点,否则会得到意外的结果。以下命令将int(1)/int(2)分开,返回0,然后尝试将0转换为浮点:

>>> float(1/2)
0.0

您的代码与输出不匹配<代码>统计
未在任何位置定义。您的代码与输出不匹配<代码>统计
未在任何位置定义。