2017-02-22 42 views
1

我正在使用boost :: format在浮点值的小数点后打印两位数字,并且在四舍五入之后也打印该数字。是这样的使用boost :: format仅在小数点后打印两位数

#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。

在此先感谢

+2

只要'val'的类型是'double'或'float',即使分配了'val = 45',你仍然有一个浮点数,而不是“整数” – WhiZTiM

回答

1

你可以尝试modf并检查小数部分为0.00,然后用另一种格式化装置。但要小心,用浮点值检查确切的值是很困难的。

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

    if (fracturedPart == 0.0) 
    { 
    // zero formater 
    } 
    else 
    { 
    // decimal formater 
    } 
} 
相关问题