[英]Python exponent operator and complex numbers
python 為什么print(type(-1**0.5))
返回float
而不是complex
?
獲取浮點數的負整數的平方根始終在數學上被視為復數。 python指數運算符如何支持獲取complex
?
print(type(-1**0.5))
<type 'float'>
在運算的數學順序中,指數先於乘法,而一元減法算作乘法(乘以 -1)。 因此,您的表達式與-(1**0.5)
相同,不涉及任何虛數。
如果你這樣做(-1)**0.5
你會在 Python 2 中得到一個錯誤,因為答案不是一個實數。 如果您想要一個復雜的答案,您需要通過執行(-1+0j)**0.5
來使用復雜的輸入。 (在 Python 3 中, (-1)**0.5
將返回一個復雜的結果。)
嘗試(-1)**0.5
代替。
-1**0.5
被解析為-(1**0.5)
,等於-1
。
>>> -1**0.5
-1
>>> (-1)**0.5
(6.123e-17+1j)
首先進行取冪,然后取反其符號。 要獲得您想要的結果,請使用括號確保-
符號與1
保持一致:
>>> -1**0.5
-1.0
>>> (-1)**0.5
(6.123233995736766e-17+1j)
Python 是正確的,因為-1**0.5
與(-1)**0.5
不同。
第一個將1提高到0.5
的冪並否定結果。
第二個將-1
提高到相同的冪並按預期返回一個復數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.