簡體   English   中英

如何在 Python 中轉換指數並去掉“e+”?

[英]How to convert exponent in Python and get rid of the 'e+'?

我從 Python 開始,我最近遇到了一個具有大值的數據集。 我的一個字段有一個如下所示的值列表: 1.3212724310201994e+18 (注意數字末尾的e+18 )。

如何將其轉換為浮點數並刪除指數而不影響值?

您可以對數據的每個元素使用Decimal模塊中的decimal

from decimal import Decimal

s = 1.3212724310201994e+18

print(Decimal(s))

Output:

1321272431020199424

首先,這個數字已經一個浮點數,你不需要改變這個。 唯一的問題是您希望更好地控制如何將其轉換為用於 output 目的的字符串。

默認情況下,超過一定大小的浮點數使用指數表示法轉換為字符串(“e”代表“*10^”)。 但是,如果要將其轉換為不帶指數表示法的字符串,則可以使用f格式說明符,例如:

a = 1.3212724310201994e+18

print("{:f}".format(a))

給出:

1321272431020199424.000000

或在 Python 3 中使用“f-strings”:

print(f"{a:f}")

這里第一個f告訴它使用 f 字符串, :f是浮點格式說明符。

您還可以指定應顯示的小數位數,例如:

>>> print(f"{a:.2f}")   # 2 decimal places
1321272431020199424.00

>>> print(f"{a:.0f}")   # no decimal places
1321272431020199424

請注意,Python 中浮點數的內部表示使用 53 位二進制精度(大約 10 ^ 16 的一部分),因此在這種情況下,您的大約 10 ^ 18 的數量值不會准確存儲直到最近的 integer,更不用說任何小數位了。 但是,上面給出了如何控制用於字符串轉換的格式的一般原則。

暫無
暫無

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

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