【问题标题】:Converting a scientific notation string to an integer将科学记数法字符串转换为整数
【发布时间】:2019-04-22 01:55:49
【问题描述】:

我有一个关于 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?

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

Converting number in scientific notation to int

【问题讨论】:

  • 你使用什么编程语言?
  • 不敢相信我忘了补充;我正在使用python(3.7版)。我已经更新了帖子。

标签: string python-3.x type-conversion integer scientific-notation


【解决方案1】:

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

所以,你需要先将其转换为浮点数来解析字符串。

试试:

print(float(distance))

对于具有更多小数的数字(例如您的 1.00E-06 示例),您可以始终强制使用浮点表示法。试试:

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

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

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

(例如)

【讨论】:

  • 谢谢你让我得到了我需要的东西!
  • 很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多