我刚开始学习Python,最近遇到了一个包含大量数值的数据集。
其中一个字段包含一系列数字,看起来像这样:1.3212724310201994e+18
(注意数字末尾的e+18
)。
我该如何将其转换为浮点数并移除指数,同时不影响数值本身?
首先,这个数字已经是一个浮点数了,你不需要改变它。唯一的问题是你想要更多地控制将其转换为字符串以便输出。
默认情况下,超过一定大小的浮点数会使用指数表示法(其中"e"代表"*10^")来转换成字符串。但是,如果你想要将其转换为没有指数表示法的字符串,可以使用f
格式说明符,例如:
a = 1.3212724310201994e+18
print("{:f}".format(a))
提供:
1321272431020199424.000000
或者在 Python 3 中使用 "f-strings":
print(f"{a:f}")
这里的第一个 f
表示使用 f-string,而 :f
是浮点数格式说明符。
您还可以指定应显示的小数位数,例如:
>>> print(f"{a:.2f}") # 2 decimal places
1321272431020199424.00
>>> print(f"{a:.0f}") # no decimal places
1321272431020199424
from decimal import Decimal
s = 1.3212724310201994e+18
print(Decimal(s))
输出:
1321272431020199424
e
编写的。如果您希望以不同的方式表示它,则是不同的问题。如果您想将其转换为整数,也是可能的。但是您无法“删除指数”,因为那是数字本身的组成部分。 - Karl Knechtel