Преобразование строки научной нотации в целое число - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть вопрос в 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).Спасибо за любую помощь!

Преобразование числа в научной записи в int

1 Ответ

0 голосов
/ 19 ноября 2018

Ссылка, которую вы разместили, действительно дает ответ, хотя и окольным путем.int () не может анализировать строки, которые еще не представляют целые числа.Но научное число - это число с плавающей точкой.

Итак, вам нужно сначала привести его к плавающей точке для анализа строки.

Попробуйте:

print(float(distance))

Для чисел с болеедесятичные дроби (например, ваш пример 1.00E-06), вы можете использовать принудительное обозначение с плавающей точкойПопробуйте:

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

Если вам нужно только определенное количество десятичных знаков, попробуйте:

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

(например)

...