最近在寫乙個模擬的裁判評分程式,涉及到分數的精度和輸出格式問題,特總結如下:
**背景:
#include using namespace std;
float num = 1.25;
1、設定對齊方式(如:右對齊,ios::right):
cout.setf(ios::right); // 設定對齊方式
cout << num << endl;;
效果(不明顯,當數字長度小於輸出寬度的時候才能看出效果,如2所示):
2、將數字輸出寬度設定為8:
cout.setf(ios::right); // 設定對齊方式
cout.width(8); //設定輸出寬度
cout << num << endl;
效果:
3、將寬度多餘的部分用某個字元(如:'0')填充:
cout.setf(ios::right); // 設定對齊方式
cout.width(8); //設定輸出寬度
cout.fill('0'); //將多餘的空格用0填充
cout << num << endl;
效果:
4、設定精度:保留**位有效數字,如果小數點最後面有0,則自動去掉:
float num = 1.25;
cout.setf(ios::right); // 設定對齊方式
cout.width(8); //設定輸出寬度
cout.fill('0'); //將多餘的空格用0填充
cout.precision(2); //設定輸出精度,保留有效數字
cout << num << endl;
效果:
5.保留小數點後有效的位數。如:1.25 保留4位有效數字後的1.250中0的顯示,要依靠cout.setf(ios::showpoint)函式(因為保留有效數字的函式不會保留沒用的0有效位):
cout.setf(ios::right); // 設定對齊方式
cout.width(8); //設定輸出寬度
cout.fill('0'); //將多餘的空格用0填充
cout.setf(ios::showpoint); //將小數精度後面的0顯示出來
cout.precision(4); //設定輸出精度,保留有效數字
cout << num << endl;
效果:
6、保留小數點後**位數
cout.setf(ios::right); // 設定對齊方式
cout.width(8); //設定輸出寬度
cout.fill('0'); //將多餘的空格用0填充
cout.flags(ios::fixed);
cout.precision(4); //設定輸出精度,
cout << num << endl;
效果(保留4為小數):
cout 輸出精度的控制方法
前陣子在牛客上做了一道純粹輸出的題,輸出控制小數點後的數字的個數,由輸入決定。時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 喜愛acm的pby同學遇到了一道數學難題,已知底數n,請你幫他準確的計算出結果a n n的 次方 結果保留小數點後x位。第一行是乙...
C 控制cout輸出的小數字數
方法一 使用setprecision n 與setiosflags ios fixed 合用,可以控制小數點右邊的數字個數,標頭檔案 include setiosflags 是包含在命名空間iomanip 中的c 操作符,該操作符的作用是執行由有引數指定區域內的動作 setprecision 也是包...
用cout控制輸出小數的位數
採用格式控制符setprecision n 控制,或者流物件的成員函式precision n 使用時都要結合fixed使用,否則n指的是整數字數和小數字數的和 使用setprecision n 要加標頭檔案iomanip 1 precision 函式和fixed includeusing names...