为什么我把这个0作为Python中(1/10)的答案?

时间:2012-02-26 05:57:11

标签: python

我在Python 2.7 Interpreter中尝试这个。

>>> print 1/10  
0  
>>> print float(1/10)  
0.0  
>>> print 1/5  
0  
>>> a = 1/5  
>>> a  
0  
>>> float(a)  
0.0  
>>>   

当我分开时,我想要一个浮点值。关于这个零输出背后的逻辑的任何想法,请让我知道如何正确地做到这一点。

7 个答案:

答案 0 :(得分:7)

浮点转换发生在整数除法之后。试试这个:

>>> print(1.0/10)
0.1

答案 1 :(得分:5)

在Python 2.x中,默认情况下/表示与两个整数参数一起使用时的整数(截断)除法。在Python 3.x中,/始终表示 float 除法,//始终表示整数除法。您可以使用以下命令获取2.x中的Python 3.x行为:

from __future__ import division

有关除法运算符的完整讨论,请参阅PEP 238

答案 2 :(得分:3)

您需要执行以下操作:

print (1.0/10)

当你这样做时:

print 1/10

它将其评估为0,因为它将其视为整数。

当你这样做时:

print float(1/10)

你把那些东西放在float()中并首先评估它,所以基本上你得到:

print float(0)

哪个是0.0

答案 3 :(得分:1)

整数除法1/10返回整数0。将整数0转换为float,只返回0.0。你需要做的是划分浮点数和一个整数来得到一个浮点数。这将有效。

>>> 1/10.0
0.1

>>> 1.0/10
0.1

答案 4 :(得分:1)

integer除法的结果为integer

From python docs

  

/(division)和//(floor division)运算符产生商   他们的论点。数字参数首先转换为a   普通类型。普通或长整数除法产生整数   相同类型;结果是与数学划分的结果   'floor'函数应用于结果

尝试

>>> 1.0/5
0.20000000000000001
>>> 1/5.0
0.20000000000000001
>>>

答案 5 :(得分:1)

您想要执行以下操作:

(float (1)/10)

答案 6 :(得分:0)

Python 2中整数之间的分区返回整数结果。 (在Python 3中,它会返回您可能期望的浮点结果。)

要获得浮点结果,请将至少一个整数转换为浮点数:

>>> print(1/10)
0
>>> print(1/float(10))
0.1
>>> print(float(1)/10)
0.1
>>> print(float(1)/float(10))
0.1