C++ 使用boost::format仅打印小数点后的2位数字

C++ 使用boost::format仅打印小数点后的2位数字,c++,boost,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; } #

我使用boost::format只打印浮点值小数点后的2位数字,在四舍五入后也是如此。是这样的

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

using namespace std;
using namespace boost;

somefunc()
{
   format outFileFormatter("%1$.2f");
   cout << outFileFormatter % val;
}
#包括
#包括
使用名称空间std;
使用名称空间boost;
somefunc()
{
格式化输出格式化程序(“%1$.2f”);
cout您可以尝试检查小数部分是否为0.00,然后使用另一个格式化程序。但是请注意,很难用浮点值检查精确值

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

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

请记住,只要
val
类型为
double
float
,即使您分配了
val=45
,您仍然有一个浮点数,而不是“整数”