簡體   English   中英

Python 中具有可變指數的科學記數法文字

[英]Scientific notation literal with variable exponent in Python

文字3e4表示 python 中的float 30000(至少為 3.8)。

>>> print(3e4)
30000.0

以下代碼的語法顯然是無效的:

x=4
3ex

3ex不是一個有效的表達式,但這個例子可以幫助我提出我的問題:

顯然,表達式3*10**4表示相同的數字,但我這里的問題純粹與科學記數法文字有關。 只是出於我的好奇心,有沒有一種方法可以使用具有可變功率的相同語法,比:

x=4
eval(f"1e{x}")

3e43*10**4之間的一個細微差別是類型(分別為 float 和 int)。 在計算這兩個表達式時,執行時間是否也存在差異?

對於您的第一個問題:不,文檔不建議您可以。

有沒有辦法使用具有可變功率的相同語法?

When float is instantiated from a string , it calls out to a CPython C library PyOS_string_to_double to which handles making the str locale-aware ( . vs , ) before passing the string directly to the C function strtod doc .

同時PyOS_string_to_double 的文檔沒有提到配置指數的任何特殊方法。

對於您關於性能的第二個問題,這很容易進行基准測試。 但是,我們沒有可作為基准的候選人。 所以,這是一個沒有實際意義的問題。

執行時間是否也存在差異?

我希望這能滿足你的好奇心。 如果沒有,請隨意挖掘我鏈接的 C 代碼。

暫無
暫無

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

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