По сути, у меня есть следующее:
typedef TFp double;
boost::format fmt("Floating point: %2$f");
TFp v = 0.000000001;
fmt % v;
std::cout << fmt.str();
Согласно руководству по формату повышения, по умолчанию выводится 6 цифр точности, поэтому отображается 0,000000, что мои пользователи интерпретируют как 0 (а я не могудаже обвинить их в этом).Я мог бы изменить строку формата и добавить точку, а затем число после знака доллара, чтобы зафиксировать количество цифр, но это число может варьироваться в зависимости от того, насколько велико значение в float, и из-за некоторых особенностей моего кода,typedef, который у меня есть в моем примере (для удвоения), иногда является плавающей точкой, так что тогда мне придется снова иметь другое число в строке формата.
По сути, я ищу способ сказатьрасширенный формат », дайте мне столько цифр, сколько необходимо, чтобы показать значение любого типа с плавающей запятой, но не более (т. е. когда значение равно 0,003, оно не должно печатать 0,003000 или что-либо еще).
Я быдумаю, что это очевидно, и мне понадобилось очень внимательно прочитать документацию, чтобы понять, что это не по умолчанию (как намекает в некоторых местах), но я не могу найти способ сделать это.