C++ boost, формат float - как указать, что я не хочу. и следующие нули
Я хотел бы использовать boost::format
преобразовать число с плавающей точкой в строку. Вот несколько примеров ожидаемых результатов:
0.5 -> "0.5"
0 -> "0"
1.00001 -> "1"
3.66 -> "3.7"
Я использую в настоящее время
boost::format("%1$.1f")
это работает в основном, но результат 0
является "0.0"
а также 1.00001
является "1.0"
когда я хочу "0"
а также "1"
вместо.
Что мне нужно изменить, чтобы избавиться от бессмысленного .0
?
1 ответ
Используйте условный выбор между двумя форматами.
boost::format(abs(x-floor(x+0.05)) < 0.1 ? "%1$.0f" : "%1$.1f")