Я хотел бы использовать 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
?
Используйте условный выбор между двумя форматами.
boost::format(abs(x-floor(x+0.05)) < 0.1 ? "%1$.0f" : "%1$.1f")
Других решений пока нет …