在C++中,利用cout停止輸出時,常常會碰到須要把持輸出精度的須要。比方,在表現浮點數時,可能須要指定小數點後保存的位數。C++供給了多少種方法來把持cout的輸出精度。
1. 默許輸出精度
C++中,cout默許輸出浮點數的精度為6位有效數字。這意味着假如輸出一個浮點數,cout會主動保存6位有效數字,假如缺乏6位,則主動補充前導零。
2. 利用setprecision()設置精度
setprecision(n)
是一個成員函數,它屬於流東西 cout。該函數用於設置cout的輸出精度,即設置浮點數輸出時保存的小數位數。參數 n 指定要保存的小數位數。
#include <iostream>
#include <iomanip>
int main() {
double num = 123.456789;
std::cout << num << std::endl; // 默許輸出,保存6位有效數字
std::cout << std::setprecision(2) << num << std::endl; // 設置輸出精度為2位
return 0;
}
輸出成果將是:
123.456789
123.46
3. 利用fixed把持小數點後的位數
fixed
是一個標記,它也屬於流東西 cout。當與 setprecision()
一起利用時,fixed
可能確保輸出的小數位數是牢固的,而不是有效數字的位數。
#include <iostream>
#include <iomanip>
int main() {
double num = 123.456789;
std::cout << std::fixed << std::setprecision(3) << num << std::endl; // 設置輸出精度為3位,牢固小數點後的位數
return 0;
}
輸出成果將是:
123.457
4. 利用unsetf()撤消fixed形式
假如須要撤消 fixed
形式,可能利用 unsetf(ios::fixed)
函數。
#include <iostream>
#include <iomanip>
int main() {
double num = 123.456789;
std::cout << std::fixed << std::setprecision(3) << num << std::endl; // 設置輸出精度為3位,牢固小數點後的位數
std::cout << std::unsetf(ios::fixed) << num << std::endl; // 撤消fixed形式
return 0;
}
輸出成果將是:
123.457
123.456789
5. 注意事項
setprecision()
設置的是輸出精度,而不是有效數字的位數。- 在利用
fixed
形式時,setprecision()
設置的是小數點後的位數,而不是總位數。 - 假如不設置
fixed
形式,setprecision()
設置的是從第一個非零數字開端的總位數。
經由過程以上方法,可能機動地把持C++中cout的輸出精度,以滿意差其余表現須要。