Нормализация точности научной нотации Python

Моя цель - просто преобразовать строку типа «1.2» в научную запись без добавления дополнительной точности. Проблема в том, что в конце вывода я всегда получаю лишние 0.

>>> input = "1.2"
>>> print '{:e}'.format(float(input))
1.200000e+00

Я пытаюсь понять, как получить только 1.2e + 00 . Я понимаю, что могу указать точность в своем операторе формата, но я не хочу без необходимости обрезать более длинные строки. Я просто хочу подавить обучающие нули.

Я пробовал использовать Decimal.normalize (), который работает во всех случаях, кроме тех, где e <2.

>>> print Decimal("1.2000e+4").normalize()
1.2E+4
>>> print Decimal("1.2000e+1").normalize()
12

Так что лучше, за исключением того, что я не хочу 12, я хочу 1.2e + 1. : P

Мы будем очень благодарны за любые предложения!

Изменить: Чтобы уточнить, входное значение уже было соответствующим образом округлено до заданной длины, которая теперь неизвестна. Я стараюсь избегать пересчета соответствующей точности форматирования.

В принципе, у меня могут быть входные значения «1,23» и «1234,56», которые должны получиться как «1,23e + 0» и «1,23456e + 3».

Мне, возможно, придется просто проверить, как долго входная строка есть и использовать ее для указания точности вручную, но я хотел проверить и убедиться, что я просто не пропустил что-то, что могло бы просто помешать экспоненциальному формату произвольно добавлять 0.

19
задан Jean-François Corbett 22 November 2017 в 09:01
поделиться