使用boost :: format只能在十进制后打印2位数

时间:2017-02-22 14:15:37

标签: c++ boost

我使用boost :: format只能在小数点后打印2位数作为浮点值,并且在舍入后也是如此。就像这样

#include <boost/format.hpp>
#include <iostream>

using namespace std;
using namespace boost;

somefunc()
{
   format outFileFormatter("%1$.2f");
   cout << outFileFormatter % val;
}

它对于浮点值正常工作,但对于整数而言,它在小数点后打印0如100是100.00。 无论如何都要在小数点后删除这个额外的00。

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以尝试modf并检查小数部分为0.00,然后使用另一个形成器。但要注意,使用浮点值检查确切的值很困难。

somefunc()
{
  double intPart(0.0);      
  double fracturedPart(modf(val, &intPart));

  if (fracturedPart == 0.0)
  {
    // zero formater
  }
  else
  {
    // decimal formater
  }
}