C++輸出格式ios
C++中默認輸出有效位數是6位,即c++
則輸出:函數
221.11
1.11011
199967 //6位有效數字,自動截取保存六位
1.99967e+006 //六位以上且沒法省略顯示將會變爲指數顯示spa
那麼若是須要顯示多位,能夠經過調整輸出格式,那麼設置c++輸出格式,主要有兩種辦法:對象
兩者有什麼區別,用法上呢,第一種就是使用控制符設置輸出顯示,例如:ci
cout<<setw(10)<<a<<endl;//設置了輸出的寬度爲10,多餘默認用空格補齊io
而第二種,經過調用流對象cout中用於控制輸出格式的成員函數來控制輸出格式,例如:引用
cout.width(10)//設置了輸出的寬度爲10,一樣的多餘的默認用空格補齊im
而值得一提的是,從影響範圍上看,筆者原覺得第二種調用成員函數將改變全局設置,可是實際上兩者都只能影響下一次的輸出格式,例,使用控制符:img
輸出爲:
1
1
1
而,調用輸出流對象的成員函數:
輸出爲:
1
1
1
1
再來具體看看兩種辦法的一些用法
1)設置寬度setw(n),n即爲輸出固定寬度,默認以空格填充,若是加上setfill('0')即以‘0’爲填充,‘’內可改成其餘字符,例如:
輸出:
0000000001
*********1
2)設置有效位數setprecision(n),n即爲設置位數,例如:
輸出:
221.116 //默認六位
221.1161101 //經過設置十位
3)設置小數點後位數,先經過setiosflags(ios::fixed)設置固定小數點的位數,再經過setprecision(n),設置小數點後固定保留n位數
例如:
輸出:
221.116 //默認六位
1.100000 //固定6位,空位自動補零
221.116110 //固定六位,後位四捨五入
221.11611012
4)設置爲指數形式輸出,setiosflags(ios::scientific),同上面設置小數後位數同樣,與setprecision連用設置,不經常使用,不做例證
5)按進制輸出,dec爲十進制,hex爲16進制,而也能夠經過setbase(n),直接設置n進制,例如:
輸出:
11111
11111
2b67
25547
2b67
用途相似上述,用法稍加改變,相似上文講解兩者區別時的用法;
流成員函數setf和控制符setiosflags括號中的參數表示格式狀態,它是經過格式標誌來指定的。格式標誌在類ios中被定義爲枚舉值。所以在引用這些格式標誌時要在前面加上類名ios和域運算符「::」。格式標誌見表13.5。