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")
Другие вопросы по тегам