2011-09-29 52 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