C++最簡單的四捨五入!!(setprecision(n)方法)

setprecision(n)是流格式控制符之一,在iomanip頭文件中。

c++默認的流輸出數值有效位是6,包括整數和小數,若數值超出6位,則第七位四捨五入到6位數

fixed :浮點值顯示爲定點十進制。 默認是小數6位數,不包含整數,若小數位超出6位,則四捨五入到6位數

1.setprecision(n) 指定一個浮點數的精度默認設置輸出的數字的總位數爲n,包含整數和小數部分;其中setprecision(0)效果是跟c++默認的流輸出數值一樣,有效位是6位,包括整數和小數

2.fixed :必須與setprecision(n)配合使用,用來控制小數位數,不夠補0,只要寫一次fixed,後面的setprecision(n)就都是指小數了。 fixed與setprecision誰先誰後沒有關係,但通常是fixed在前先固定6位小數(若此時小數已經超出6位,則先四捨五入到6位)再precision(n)取n位小數(n<6)

3.如果與setiosnags(ios::scientific)合用, 可以控制指數表示法的小數位數。setiosflags(ios::scientific)是用指數方式表示實數。

4.resetiosflags(ios::fixed) 取消精度的設置。

1.)超出的位數會被四捨五入進去!!!

2)與setw()不同setprecision(n)一直作用到下一個setprecisin(n)之前,所以,只需要寫一個setprecision(n)就可以。setw()要每次都寫

包含小數:

#include <iostream>
#include <iomanip>
using namespace std;
{
double f = 3.123456789;
cout<<f<<endl;    //  輸出3.12346 (包含整數和小數,且四捨五入)
cout<<setprecision(2)<<f<<endl;   //輸出3.1(包含整數和小數,共兩位,且最後一位四捨五入),這條會作用到下一條去
cout<<fixed<<f<<endl;   //輸出3.123457 (僅包含小數,且四捨五入),沒有上一條,則輸出六位小數3.123457
cout<<setprecision(2)<<fixed<<f<<endl;  //輸出3.12  (小數2位,四捨五入)
cout<<fixed<<setprecision(2)<<f<<endl;  // 效果同上
system("pause");
return 0;
}

包含整數:

#include <iomanip>
#include<iostream>
using namespace std;
int main()
{
double f = 123456789;
cout<<f<<endl;    //  輸出1.23457*(10,6)(採用科學記數法變成包含整數和小數,共6位,且最後一位四捨五入)
cout<<setprecision(2)<<f<<endl;   //輸出120000000  1.2*pow(10,6)採用科學記數法,包含整數和小數,共兩位,且最後一位四捨五入)<
cout<<fixed<<f<<endl;   //輸出12345689.000000(小數6位補0)
cout<<setprecision(2)<<fixed<<f<<endl;  //輸出12345689.00
cout<<fixed<<setprecision(2)<<f<<endl;  // 效果同上
system("pause");
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章