python中*
和**
之间有什么区别?这两个操作员的工作如何根据PEMDAS工作以及为什么在以下情况下输出存在差异
16**(1/2)
收益1 16**(0.5)
收益率4.0 16**0.5
也会产生4.0 但是1/2
= 0.5
那么为什么输出会有差异?
答案 0 :(得分:1)
16 **(0.5)表示16的幂为0.5,即平方根16 = 4
16 **(1/2)似乎是一样的。但1/2产生整数计算并回答0.因此,16为幂0 = 1
正确的方法是
答案 1 :(得分:0)
16**(1/2)
在Python2中是16 ** 0(但它应该与Python3一起使用); 16**0.5
与上一个相同。问题来自python2(整数除法)中/
的含义。
答案 2 :(得分:0)
除了到目前为止的答案,你还可以1.0 / 2
强制浮动计算。
答案 3 :(得分:0)
在Python 3.x版本中,任何分区转换为float:
>>>1.0/2.0
0.5
>>> 1/2
0.5
如果你想在Python2.x中实现,你必须手动将interget转换为float。
>>> 1.0/2
0.5
或
>>> float(1)/float(2)
或 从未来,进口该部门。
>>> from __future__ import division
>>> 1/2
0.5