2011-09-29 51 views
7
double d = 1/2.; 
printf("%.2lf\n", d); 

这会打印出0.50。这是我想要使用ostream操纵器复制的。然而,没有一个明显的iomanip操纵器让我设置最小所需小数位(如果我理解正确,setprecision设置最大宽度)。有没有一个纯粹的iostreamboost方式来做到这一点?ostream相当于%.2f或%.2lf

回答

3

使用setprecision结合fixed

根据该标准的第22.4.2.2.2节,iostream的精度规格与printf的效果完全相同。并且fixed给出与printf%f完全相同的行为。

+0

你能给一个链接吗? –

+0

@FooBah:看到http://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents –

10

可以使用std::fixedstd::setprecisioniomanip头:

#include <iostream> 
#include <iomanip> 
int main(void) { 
    double d = 1/2.; 
    std::cout << std::fixed << std::setprecision(2) << d << std::endl; 
    return 0; 
} 

根据需要此输出0.50