Как сделать формат Python плавающим с определенным количеством значимых цифр?
Я хочу, чтобы мои выходные номера Python (2.4.3) имели определенный формат. В частности, если число является конечным десятичным числом с <= 6 значащими цифрами, показать все. Однако, если он имеет > 6 значащих цифр, то выводит только 6 значащих цифр.
"A" показывает, как Python пишет поплавки. "B" показывает, как я хочу, чтобы они были написаны. Как я могу сделать Python форматировать мои номера таким образом?
A:
10188469102.605597
5.5657188485
3.539
22.1522612479
0
15.9638450858
0.284024
7.58096703786
24.3469152383
B:
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469
Ответы
Ответ 1
Вам понадобится модификатор g
для format
, который уменьшит несущественные нули;
>>> "{0:.6g}".format(5.5657188485)
'5.56572'
>>> "{0:.6g}".format(3.539)
'3.539'
Извините, мое обновление также включает в себя тот факт, что я ограничен использованием Python 2.4.3, который не имеет функции format().
Спецификаторы формата работают даже без функции .format()
:
>>> for i in a:
... print '%.6g' % (i,)
...
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469
Ответ 2
попробуйте этот путь
a=[10188469102.605597,5.5657188485,3.539,22.1522612479,0,15.9638450858,0.284024,7.58096703786,24.3469152383]
for i in a:
if i >100:
print '{:.6e}'.format(i)
else:
print '{:.6f}'.format(i)
для более низкой версии python
for i in a:
if i >100:
print '%6e'%i
else:
print '%6f'%i
Выход
1.018847e+10
5.565719
3.539000
22.152261
0.000000
15.963845
0.284024
7.580967
24.346915
Ответ 3
Существует способ сохранить конечные нули, чтобы он последовательно отображал количество значащих цифр. Не совсем то, что хотел ОП, но, вероятно, полезно для многих.
a = [10188469102.605597,5.5657188485,3.539,22.1522612479,0,15.9638450858,0.284024,7.58096703786,24.3469152383]
for i in a:
print("{:#.6g}".format(i))
Выход
1.01885e+10
5.56572
3.53900
22.1523
0.00000
15.9638
0.284024
7.58097
24.3469
Обратите внимание, что это будет работать только с функцией format
а не с оператором %
.
Ссылка: недокументированная функция (по состоянию на 2019 г.)