c++ boost format float - 如何指定我不想要 .和以下零

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

我想使用 boost::format 将 float 转换为字符串。 以下是预期结果的几个示例:

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

最佳答案

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

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

关于c++ boost format float - 如何指定我不想要 .和以下零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17753675/

相关文章:

java - 为什么多次加0.1仍然无损?

c++ - 抑制 Xcode 对库头中内联函数的未使用函数警告的正确方法

OpenCV 2.4.3 Haar 分类器错误 AdaBoost misclass

java - solr boost函数的目的

c++ - Google 的 Protocol Buffer 在实践中处理浮点类型的跨平台程度如何?

c++ - 如何从输入 C++ 中分别读取整数和分数

c++ - 与正方形网格的最佳线相交

c++ - 用子类对象初始化的多态基类对象数组

c++ - Snow Leopard 上的链接错误

c++ - boost::archive::text_iarchive 构造函数异常