c ++ boost format float - 如何指定我不想要的。并且跟随零

时间:2013-07-19 19:05:39

标签: c++ boost floating-point formatting boost-format

我想使用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 个答案:

答案 0 :(得分:2)

使用条件在两种格式之间进行选择。

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