按有效位輸出是 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; //include<iostream> 加了fixed意味著是固定點方式顯示,所以這裡的精度指的是小數位,輸出為12.3457
cout.setf(ios::fixed); //沒有include<iostream> ,設置為小數位始終有 6 位,沒有這個的話就會像上面那個代碼那樣固定的不是小數點後面的數字了。
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;
}
C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm
讀C++ Primer 之構造函數陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm
讀C++ Primer 之智能指針 http://www.linuxidc.com/Linux/2011-08/40177.htm
讀C++ Primer 之句柄類 http://www.linuxidc.com/Linux/2011-08/40175.htm