簡體   English   中英

為什么當我將字符串轉換為浮點數時得到不同的答案,而不是從一開始就使用浮點值

[英]Why am I getting different answers when I convert a string to a float, vs just using the float value from the start

我正在嘗試將 2 個字符串轉換為浮點數,然后將其中一個提高到另一個的冪。 由於某種原因, float('x') ** float('y') vs x ** y 的輸出有時不一樣

例如:

float('-5') ** float('-5') 
0.00032

對比

-5 ** -5
0.00032

這工作正常; 但是,有些數字沒有。 例如:

float('-5.04') ** float('-5.04')
-0.00028596440705202706+3.612570580059258e-05j

對比:

-5.04 ** -5.04
-0.0002882372438117746

(順便說一句,下面這個是正確答案)

關於為什么會發生這種情況的任何建議?

-5.04 ** -5.04被評估為-(5.04 ** -5.04)因為**的運算符優先級高於一元- 通過比較結果可以看出:

>>> 5.04 ** -5.04
0.0002882372438117746
>>> -5.04 ** -5.04
-0.0002882372438117746
>>> -(5.04 ** -5.04)
-0.0002882372438117746

要“修復”這個問題,您需要在第一個數字及其一元-周圍添加括號:

>>> (-5.04) ** -5.04
(-0.0002859644070520271+3.6125705800592075e-05j)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM