c++如何控制輸出浮點(diǎn)數(shù)小數(shù)點(diǎn)后若干位
C++輸出實(shí)現(xiàn)保留小數(shù)點(diǎn)后若干位
此方法主要參見(jiàn)《c++primer中文版》第五版670頁(yè)的內(nèi)容,使用<iomanip>標(biāo)準(zhǔn)庫(kù)中的fixed操縱符與setprecision操縱符。
setprecision操縱符
setprecision操縱符可以指定浮點(diǎn)數(shù)的打印精度(總的位數(shù)),四舍五入且超過(guò)原有位數(shù)不會(huì)補(bǔ)零。
fixed操縱符
fixed操縱符可以改變流的狀態(tài)以使用定點(diǎn)十進(jìn)制表示浮點(diǎn)數(shù),默認(rèn)精度是小數(shù)點(diǎn)后6位,不足補(bǔ)零。
除此之外,iomanip中還有其他針對(duì)浮點(diǎn)數(shù)顯示的操作符,例如scientific(科學(xué)記數(shù)法顯示)、hexfloat(16進(jìn)制顯示),defaultfloat(恢復(fù)默認(rèn)狀態(tài))。
fixed+setprecision
fixed系列的操作符會(huì)改變流的精度的默認(rèn)含義,默認(rèn)情況下,精度是指數(shù)字的總位數(shù),包括小數(shù)部分位數(shù)與整數(shù)部分位數(shù)。
但在使用fixed、scientific、hexfloat后,精度值只控制小數(shù)部分,于是我們可以同時(shí)使用fixed與setprecision來(lái)控制小數(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ù),或者保留幾位有效位。這里有一個(gè)比較好用的方法。首先需要包含 iomanip 頭文件。
1、保留n位小數(shù)位
使用fixed 和 setprecision(n)方法,參數(shù)n表示保留的小數(shù)位個(gè)數(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表示保留的有效位個(gè)數(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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章

C++利用opencv實(shí)現(xiàn)人臉檢測(cè)

C++實(shí)現(xiàn)Armadillo庫(kù)與OpenCV庫(kù)之間的數(shù)據(jù)格式轉(zhuǎn)換

Matlab利用遺傳算法GA求解非連續(xù)函數(shù)問(wèn)題詳解