我基本上有以下几点:
typedef TFp double;
boost::format fmt("Floating point: %2$f");
TFp v = 0.000000001;
fmt % v;
std::cout << fmt.str();
根据 boost 格式手册,默认情况下输出 6 位精度,因此显示 0.000000,我的用户将其解释为 0(我什至不能怪他们这么想)。我可以修改我的格式字符串并在美元符号后添加一个点和一个数字来固定位数,但是这个数字可能会根据浮点值的大小而变化,并且由于我的代码的一些特殊性,我在示例中(加倍)的 typedef 有时是浮点数,因此我必须在格式字符串中再次使用不同的数字。
基本上我正在寻找一种方法来告诉 boost 格式'给我尽可能多的数字来显示任何浮点类型的值,但不要更多(即,当值为 0.003 时,它不应该打印 0.003000 或其他)。
我认为这是一件显而易见的事情,我花了两次仔细阅读文档才发现它不是默认的(正如在某些地方暗示的那样),但我找不到办法做到这一点.