Запись чисел с плавающей запятой без десятичных знаков

#python #string #format

#python #строка #форматирование

Вопрос:

Я пытаюсь заставить Python реплицировать некоторый вывод FORTRAN реальных значений. Мой FORTRAN выводит реальное значение как «31380».. Я пытаюсь воспроизвести то же самое в Python — обратите внимание, что, хотя у меня нет десятичных знаков, я действительно хочу, чтобы была напечатана десятичная точка (точка). Мой текущий код

 htgm=31380.
print '{:6.0f}'.format(htgm)
  

что дает «31380». Что я делаю не так?

Комментарии:

1. Как насчет добавления . в строку формата? '{:6.0f}.'.format(htgm)

Ответ №1:

Язык форматирования Python включает в себя «альтернативную» форму для чисел с плавающей запятой, которая принудительно вводит десятичную точку, используя ‘#’ в строке формата:

 >>> htgm=31380.
>>> format(htgm, '#.0f')
'31380.'
  

Это то, что, я думаю, вы ищете.
Я думал #g , это будет то, что вы хотели, но по какой-то причине python добавляет 0 обратно:

 >>> htgm=31380.
>>> format(htgm, 'g')
'31380'
>>> format(htgm, '#g')
'31380.0'
  

Комментарии:

1. это доступно только в Python 3?

2. Хотя # существует с Py> 2.6, похоже, что альтернативная форма для чисел с плавающей запятой была добавлена только в Py3.

Ответ №2:

Невозможно сделать это на Python, сохраняя тип htgm as float . Однако, если вы согласны с тем, чтобы сделать это как str , вы можете сделать:

 htgm=31380.
'{0:.0f}.'.format(htgm)
# returns: '31380.'

# OR, even simply
'{}.'.format(int(htgm))
  

Ответ №3:

Когда вам нужно отобразить номер, используйте:

 print(str(htgm)[:-1])
  

Это обозначение срежет последний ‘0’.