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