我试图计算27^(1/ 3 ) =3,但结果并不像预期的那样。
>>> 27 ** (1/3)
1
>>> 27 ** (1/3.)
3.0首先,为什么第一个计算结果是1,因为1/3被抛到整数中,所以等于零吗?
第二,什么是“。”在一般Python中,我可以在任何数字后面加一个点,以便把它从int转换成double吗?
谢谢。
发布于 2016-03-13 20:54:39
首先,为什么第一个计算结果是1,因为1/3被抛到整数中,所以等于零吗?
是的,没错。
什么是“.”在一般Python中,我可以在任何数字后面加一个点,以便把它从int转换成double吗?
.显式地使数字成为一个浮点数,因为1.0将反对1。
发布于 2016-03-13 21:12:47
您可以在python 2中体验整数除法。
在python 2中:
>>> 2/3
0在python 3中:
>>> 2/3
0.6666666如果您想要在python3中使用python2行为,您可以这样做
from __future__ import division作为你的第一次进口。
对于整数除法,请使用
>>> 2 // 3
0或者您可以使用2.0 / 3.0来使用float。
发布于 2016-03-13 21:15:56
在python2.x中,除法整数默认为地板除法,因此任何非整数商都会自动舍入到最近的整数,例如
>>> 1/3
0
>>> 5/2
2所以当你试图计算27 ** (1/3)时,你只是在计算27 ** 0
这个问题有很多解决办法,最简单的方法就是在指数中使用浮点- (1.0/3.0),甚至只是(1/3.0)。然而,如果你要做大量的这些计算,它可能会变得烦人的是,不断地键入所有数字的浮点形式。在本例中,您可以使用未来的模块来利用Python3.x除法行为,这总是会产生一个浮点值:
>>> from __future__ import division
>>> 1/3
0.3333333333333333这样,计算将永远不会默认为地板划分。如果在某个时候想要在同一个程序中划分楼层,只需使用//操作符来获得类似python2.x整数除法的行为,如下所示:
>>> 1//3
0https://stackoverflow.com/questions/35975678
复制相似问题