天天看點

指定小數位數輸出

按有效位輸出是 setprecision,按小數位數輸出也是setprecision,但到底是誰取決于fixed。

cout << resetiosflags(ios::fixed) << setprecision(n) << float-point-number; 是按n位有效數輸出

cout << setiosflags(ios::fixed) << setprecision(n) << float-point-number; 是按n位小數輸出

測試代碼:

#include <iostream>
#include <iomanip>
using namespace std;

int main( void )
{
    const double value = 12.3456789;

    cout << value << endl; // 預設以6精度,是以輸出為 12.3457
    cout << setprecision(4) << value << endl; // 改成4精度,是以輸出為12.35
    cout << setprecision(8) << value << endl; // 改成8精度,是以輸出為12.345679
    cout << fixed << setprecision(4) << value << endl; // 加了fixed意味着是固定點方式顯示,是以這裡的精度指的是小數位,輸出為12.3457
    cout << value << endl; // fixed和setprecision的作用還在,依然顯示12.3457
    cout.unsetf( ios::fixed ); // 去掉了fixed,是以精度恢複成整個數值的有效位數,顯示為12.35
    cout << value << endl;
    cout.precision( 6 ); // 恢複成原來的樣子,輸出為12.3457
    cout << value << endl;
}
           

原文位址: http://blog.vckbase.com/bruceteen/archive/2006/12/15/23517.html