c++如何控制輸出浮點數(shù)小數(shù)點后若干位
C++輸出實現(xiàn)保留小數(shù)點后若干位
此方法主要參見《c++primer中文版》第五版670頁的內容,使用<iomanip>標準庫中的fixed操縱符與setprecision操縱符。
setprecision操縱符
setprecision操縱符可以指定浮點數(shù)的打印精度(總的位數(shù)),四舍五入且超過原有位數(shù)不會補零。
fixed操縱符
fixed操縱符可以改變流的狀態(tài)以使用定點十進制表示浮點數(shù),默認精度是小數(shù)點后6位,不足補零。
除此之外,iomanip中還有其他針對浮點數(shù)顯示的操作符,例如scientific(科學記數(shù)法顯示)、hexfloat(16進制顯示),defaultfloat(恢復默認狀態(tài))。
fixed+setprecision
fixed系列的操作符會改變流的精度的默認含義,默認情況下,精度是指數(shù)字的總位數(shù),包括小數(shù)部分位數(shù)與整數(shù)部分位數(shù)。
但在使用fixed、scientific、hexfloat后,精度值只控制小數(shù)部分,于是我們可以同時使用fixed與setprecision來控制小數(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(); }
結果:
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(); }
結果:
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C++實現(xiàn)Armadillo庫與OpenCV庫之間的數(shù)據(jù)格式轉換
在C++領域,數(shù)據(jù)格式轉換是常見且關鍵的任務,尤其是在使用多個不同的庫進行復雜的數(shù)據(jù)處理時,Armadillo和OpenCV是兩個在科學計算和計算機視覺領域非常受歡迎的庫,下面我們將詳細探討如何在C++中實現(xiàn)Armadillo庫與OpenCV庫之間的數(shù)據(jù)格式轉換,需要的朋友可以參考下2025-03-03Matlab利用遺傳算法GA求解非連續(xù)函數(shù)問題詳解
遺傳算法起源于對生物系統(tǒng)所進行的計算機模擬研究。其本質是一種高效、并行、全局搜索的方法,能在搜索過程中自動獲取和積累有關搜索空間的知識,并自適應地控制搜索過程以求得最佳解。本文將利用其求解非連續(xù)函數(shù)問題,需要的可以參考一下2022-09-09