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?

2

Решение

Используйте условный выбор между двумя форматами.

boost::format(abs(x-floor(x+0.05)) < 0.1 ? "%1$.0f" : "%1$.1f")
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]