2 回答

TA貢獻1856條經驗 獲得超11個贊
使用setprecision(n)可控制輸出流顯示浮點數的數字個數。C++默認的流輸出數值有效位是6。
如果setprecision(n)與setiosflags(ios::fixed)合用,可以控制小數點右邊的數字個數。setiosflags(ios::fixed)是用定點方式表示實數。
如果與setiosnags(ios::scientific)合用, 可以控制指數表示法的小數位數。setiosflags(ios::scientific)是用指數方式表示實數。
例如,下面的代碼分別用浮點、定點和指數方式表示一個實數:
//*********************
//** ch2_1.cpp **
//*********************
#include <iostream.h>
#include <iomanip.h> //要用到格式控制符
void main()
{
double amount = 22.0/7;
cout <<amount <<endl;
cout <<setprecision(0) <<amount <<endl
<<setprecision(1) <<amount <<endl
<<setprecision(2) <<amount <<endl
<<setprecision(3) <<amount <<endl
<<setprecision(4) <<amount <<endl;
cout <<setiosflags(ios::fixed);
cout <<setprecision(8) <<amount <<endl;
cout <<setiosflags(ios::scientific)
<<amount <<endl;
cout <<setprecision(6); //重新設置成原默認設置
}
運行結果為:
3.14286
3
3
3.1
3.14
3.143
3.14285714
3.14285714e+00
該程序在32位機器上運行通過。
在用浮點表示的輸出中,setprecision(n)表示有效位數。
第1行輸出數值之前沒有設置有效位數,所以用流的有效位數默認設置值6:第2個輸出設置了有效位數0,C++最小的有效位數為1,所以作為有效位數設置為1來看待:第3~6行輸出按設置的有效位數輸出。
在用定點表示的輸出中,setprecision(n)表示小數位數。
第7行輸出是與setiosflags(ios::fixed)合用。所以setprecision(8)設置的是小數點后面的位數,而非全部數字個數。
在用指數形式輸出時,setprecision(n)表示小數位數。
第8行輸出用setiosflags(ios::scientific)來表示指數表示的輸出形式。其有效位數沿用上次的設置值8
- 2 回答
- 0 關注
- 1197 瀏覽
添加回答
舉報