将科学记数法字符串转换为整数

Converting a scientific notation string to an integer

我在 Python 3.7 中有一个问题。我正在打开一个文本文件 (input.txt) 并从文本文件的各行创建变量。例如我的文本文件如下所示:

Case1
P
1.00E+02
5.

我需要创建变量以便:

title = "Case1"
area = "P"
distance = 100
factor = 5

到目前为止,这是我所拥有的:

f = open('C:\input.txt',"r")
title = f.readline().strip()
area = f.readline().strip()
distance = f.readline().strip()
factor = f.readline().strip().strip(".")
f.close
print(title)
print(area)
print(distance)
print(factor)

这导致:

Case1
P
1.00E+02
5

如何让距离变量显示为 100 而不是 1.00E+02?

我发现下面的 link 认为它会有所帮助,但无法从那里解决我的问题。这是我经过简化的较大程序的一小部分,但如果它在这里工作,它将满足我的需要。我的程序需要打开一个生成的文本文件并生成另一个文本文件,因此科学记数法数字将在 1.00E-06 和 1.00E+03 之间变化。生成的文本文件需要将这些数字作为整数(即​​介于 0.000001 和 1000 之间)。感谢您的帮助!

您发布的 link 实际上给出了答案,尽管是以迂回的方式。 int() 无法解析尚未表示整数的字符串。 但是科学数字是浮点数。

因此,您需要先将其转换为 float 才能解析字符串。

尝试:

print(float(distance))

对于小数位数较多的数字(例如您的 1.00E-06 示例),您可以始终强制使用浮点符号。尝试:

print(format(float(distance), 'f'))

如果您只想要一定数量的小数,请尝试:

print(format(float(distance), '.2f'))  

(举例)