乘法运算符输出对不同值的变化

时间:2015-06-16 09:18:48

标签: python python-2.7 python-3.x

python中***之间有什么区别?这两个操作员的工作如何根据PEMDAS工作以及为什么在以下情况下输出存在差异

  • 16**(1/2)收益1
  • 16**(0.5)收益率4.0
  • 16**0.5也会产生4.0

但是1/2 = 0.5那么为什么输出会有差异?

4 个答案:

答案 0 :(得分:1)

  • ' *'意味着乘法
  • ' **'意味着力量

16 **(0.5)表示16的幂为0.5,即平方根16 = 4

16 **(1/2)似乎是一样的。但1/2产生整数计算并回答0.因此,16为幂0 = 1

正确的方法是

  • 16 **(1.0 / 2.0)
  • 16 **(float(1)/ float(2))

答案 1 :(得分:0)

  • 16**(1/2)在Python2中是16 ** 0(但它应该与Python3一起使用);
  • `16 **(0.5)是预期的平方根
  • 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