我使用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。
提前致谢
答案 0 :(得分:1)
您可以尝试modf
并检查小数部分为0.00,然后使用另一个形成器。但要注意,使用浮点值检查确切的值很困难。
somefunc()
{
double intPart(0.0);
double fracturedPart(modf(val, &intPart));
if (fracturedPart == 0.0)
{
// zero formater
}
else
{
// decimal formater
}
}