我用Python编写了一个计算器,正在处理指数运算。我在处理小数的指数时遇到了一些非常奇怪的问题,所以我尝试在控制台中重现这个问题。这就是我得到的:
Python 3.5.2 (default, Oct 11 2016, 04:59:56)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> num1 = -3.0
>>> num2 = 2.5
>>> opr = '^'
>>> if opr == '^':
... print(num1**num2)
...
(4.772588574262081e-15+15.588457268119896j)
>>> -3.0**2.5
-15.588457268119896
有没有关于如何避免第一个输出并获得第二个输出的指针?我甚至不完全确定第一个输出代表什么。你知道吗
不同的输出仅仅是由于operator precedence导致的操作顺序不同,请使用paranethes
()
确保应用正确的顺序:第一个输出正确。这是一个复数,因为你有负数的十进制幂。你知道吗
您不能复制它,因为在最后一行中,您应该编写
(-3.0)**2.5
。您编写的内容相当于-(3.0**2.5)
,因为指数运算的优先级高于一元运算符-
。你知道吗你的问题不是Python而是数学:
你可能知道,负数没有真正的平方根。它们有复数的平方根,用
j
表示。你知道吗当你把它直接写到控制台时,他理解了另一件事:
将其直接写入控制台的正确形式是:
相关问题 更多 >
编程相关推荐