#include<iostream> #include"math.h" #include <iomanip> using namespace std; int main(){ int m; double n,sum=0; // int qiuhe(int i,int n); cin>>n>>m; //a=n; for(int i=0;i<m;i++){ sum+=n; n=sqrt(n); } cout<<fixed<< setprecision(2)<<sum;//控制小數點后兩位輸出 return 0; }
C++輸出格式
C++中默認輸出有效位數是6位,即
則輸出:
221.11
1.11011
199967 //6位有效數字,自動截取保存六位
1.99967e+006 //六位以上且無法省略顯示將會變為指數顯示
那么如果需要顯示多位,可以通過調整輸出格式,那么設置c++輸出格式,主要有兩種辦法:
1、在輸入流與輸出流中使用控制符
2、用流對象的成員函數控制輸出格式
二者有什么區別,用法上呢,第一種就是使用控制符設置輸出顯示,例如:
cout<<setw(10)<<a<<endl;//設置了輸出的寬度為10,多余默認用空格補齊
而第二種,通過調用流對象cout中用於控制輸出格式的成員函數來控制輸出格式,例如:
cout.width(10)//設置了輸出的寬度為10,同樣的多余的默認用空格補齊
而值得一提的是,從影響范圍上看,筆者原以為第二種調用成員函數將改變全局設置,但是實際上二者都只能影響下一次的輸出格式,例,使用控制符:
輸出為:
1
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
2、用流對象的成員函數控制輸出格式
用途類似上述,用法稍加改變,類似上文講解二者區別時的用法;
流成員函數setf和控制符setiosflags括號中的參數表示格式狀態,它是通過格式標志來指定的。格式標志在類ios中被定義為枚舉值。因此在引用這些格式標志時要在前面加上類名ios和域運算符“::”。格式標志見表13.5。