Python pow **结果

时间:2013-08-15 10:21:40

标签: python python-2.7

为什么此示例中的内置运算符4**(1/2)(这是一个平方根运算)返回结果1而不是2,因为它应该是预期的?如果不会返回一个可接受的结果,它应该会出错,但Python继续工作而没有任何崩溃。至少在Python 2.7.4 64位分发中。

数学函数pow(4,1/2)也会发生这种情况,它会返回1而没有错误。

相反,在执行4**(0.5)时,它返回结果2.0这是正确的,尽管它混合了整数和浮点数而没有任何警告。 pow也是如此。

对此行为的任何解释?他们会被视为错误吗?

2 个答案:

答案 0 :(得分:9)

1/2使用 floor 除法,而不是浮点除法,因为两个操作数都是整数:

>>> 1/2
0

使用浮点值,或使用from __future__ import division切换到{3}运算符总是使用浮点除法的Python 3行为:

/

答案 1 :(得分:1)

1/2会将0.5作为答案,但由于它是int/int,因此会返回int,因此会截断.5并返回0 }。要获得float结果,其中任何一个数字必须为float。因此你必须这样做:

>>> 4 ** (1.0/2)
2.0

这很有效,你也可以试试这个:

>>> math.pow(4,1.0/2)
2.0

或者你也可以试试这个:

>>> math.sqrt(4)
2.0