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

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

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