分数的Python指数计算

时间:2016-03-13 20:50:34

标签: python python-2.7

我试图计算27 ^(1/3)= 3.但结果并不像预期的那样。

>>> 27 ** (1/3)
1
>>> 27 ** (1/3.)
3.0

首先,为什么第一次计算将导致1,是因为1/3被转换为int所以它等于零?

其次,''是什么?一般来说,在Python中,我可以在任何数字上加一个点,以便将它从int转换为double吗?

感谢。

3 个答案:

答案 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