printf, sprintf печатают по крайней мере два десятичных разряда

Я пытаюсь выяснить, как использовать sprintf для печати по крайней мере двух десятичных разрядов и никаких начальных нулей. Например,

вход:

23
23.0
23.5
23.55
23.555
23.0000

вывод:

23.00
23.00
23.50
23.55
23.555
23.00

любая справка форматирования ценилась бы

15
задан PhilBrown 3 June 2010 в 14:24
поделиться

1 ответ

Нет такого встроенного спецификатора формата. Вы можете проверить, имеет ли число, которое нужно напечатать, два или меньше десятичных знаков (округлить до двух десятичных знаков и сравнить), и если да, используйте% .02f. Если в числе больше десятичных знаков, используйте спецификатор% g. Вот пример на Ruby:

def print_two_dec(number)
  rounded = (number*100).to_i / 100.0
  if number == rounded
    printf "%.02f\n", number
  else
    printf "%g\n", number
  end
end

[ 23, 23.0, 23.5, 23.55, 23.555 ].each do |number|
  print_two_dec(number)
end

Выходы:

23.00
23.00
23.50
23.55
23.555
14
ответ дан 1 December 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: