Я пытаюсь выяснить, как использовать sprintf для печати по крайней мере двух десятичных разрядов и никаких начальных нулей. Например,
вход:
23
23.0
23.5
23.55
23.555
23.0000
вывод:
23.00
23.00
23.50
23.55
23.555
23.00
любая справка форматирования ценилась бы
Нет такого встроенного спецификатора формата. Вы можете проверить, имеет ли число, которое нужно напечатать, два или меньше десятичных знаков (округлить до двух десятичных знаков и сравнить), и если да, используйте% .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