我试图计算27 ^(1/3)= 3.但结果并不像预期的那样。
>>> 27 ** (1/3)
1
>>> 27 ** (1/3.)
3.0
首先,为什么第一次计算将导致1,是因为1/3被转换为int所以它等于零?
其次,''是什么?一般来说,在Python中,我可以在任何数字上加一个点,以便将它从int转换为double吗?
感谢。
答案 0 :(得分:3)
首先,为什么第一次计算会产生1,是因为1/3 被铸造成一个int所以它等于零?
是的,就是这样。
'。'是什么一般来说,在Python中,我可以附加一个点 任何数字,以便将它从int转换为double?
.
明确地将数字设为浮点数,因为1.0
只会与1
相对。
答案 1 :(得分:2)
您在python 2中遇到整数除法。
在python 2中:
>>> 2/3
0
在python 3中:
>>> 2/3
0.6666666
如果你想在python2中使用python3行为,你可以做
from __future__ import division
作为您的第一次导入。
对于整数除法,请使用
>>> 2 // 3
0
或者您可以使用2.0 / 3.0
来使用float
s。
答案 2 :(得分:0)
在python 2.x中,将整数划分为默认值,因此任何非整数商都会自动向下舍入到最接近的整数,例如
>>> 1/3
0
>>> 5/2
2
所以当你尝试计算27 **(1/3)时,你只是计算27 ** 0
这个问题有很多变通方法,最简单的方法就是在指数中使用浮点数 - (1.0 / 3.0),甚至只是(1 / 3.0)。但是,如果您要进行大量的这些计算,那么不断地以浮点形式输出所有数字可能会很烦人。在这种情况下,您可以使用 future 模块来利用Python 3.x除法行为,这总是会产生浮点值:
>>> from __future__ import division
>>> 1/3
0.3333333333333333
这样计算永远不会默认为分区。如果在某些时候你想要在同一个程序中进行地板划分,你可以使用//运算符来获得类似于python 2.x整数除法的行为,如下所示:
>>> 1//3
0