c++如何控制輸出浮點(diǎn)數(shù)小數(shù)點(diǎn)后若干位
C++輸出實(shí)現(xiàn)保留小數(shù)點(diǎn)后若干位
此方法主要參見《c++primer中文版》第五版670頁的內(nèi)容,使用<iomanip>標(biāo)準(zhǔn)庫中的fixed操縱符與setprecision操縱符。
setprecision操縱符
setprecision操縱符可以指定浮點(diǎn)數(shù)的打印精度(總的位數(shù)),四舍五入且超過原有位數(shù)不會補(bǔ)零。

fixed操縱符
fixed操縱符可以改變流的狀態(tài)以使用定點(diǎn)十進(jìn)制表示浮點(diǎn)數(shù),默認(rèn)精度是小數(shù)點(diǎn)后6位,不足補(bǔ)零。

除此之外,iomanip中還有其他針對浮點(diǎn)數(shù)顯示的操作符,例如scientific(科學(xué)記數(shù)法顯示)、hexfloat(16進(jìn)制顯示),defaultfloat(恢復(fù)默認(rèn)狀態(tài))。
fixed+setprecision
fixed系列的操作符會改變流的精度的默認(rèn)含義,默認(rèn)情況下,精度是指數(shù)字的總位數(shù),包括小數(shù)部分位數(shù)與整數(shù)部分位數(shù)。
但在使用fixed、scientific、hexfloat后,精度值只控制小數(shù)部分,于是我們可以同時(shí)使用fixed與setprecision來控制小數(shù)點(diǎn)后的位數(shù),下圖設(shè)置小數(shù)點(diǎn)后5位輸出浮點(diǎn)數(shù)。

c++輸出浮點(diǎn)數(shù)值“保留n位小數(shù)”或“保留n位有效位”
我們經(jīng)常在輸出浮點(diǎn)數(shù)值時(shí),需要保留3位 / 2位等小數(shù),或者保留幾位有效位。這里有一個比較好用的方法。首先需要包含 iomanip 頭文件。
1、保留n位小數(shù)位
使用fixed 和 setprecision(n)方法,參數(shù)n表示保留的小數(shù)位個數(shù)。
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
double PT = 3.14159267;
//保留三位小數(shù)
cout << fixed <<setprecision(3) << PT <<endl;
//保留三位有效位
// cout << setprecision(2) << PT <<endl;
getchar();
}結(jié)果:

2、保留n位有效位
只使用setprecision(n)方法,參數(shù)n表示保留的有效位個數(shù)。
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
double PT = 3.14159267;
//保留三位小數(shù)
// cout << fixed <<setprecision(3) << PT <<endl;
//保留兩位有效位
cout << setprecision(2) << PT <<endl;
getchar();
}結(jié)果:

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)Armadillo庫與OpenCV庫之間的數(shù)據(jù)格式轉(zhuǎn)換
Matlab利用遺傳算法GA求解非連續(xù)函數(shù)問題詳解

