按有效位輸出是 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