C++控制小數位數輸出


#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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM