C++
單純setprecison函數僅控制輸出位數
看例子
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
float number1 = 132.364, number2 = 26.91;
float quotient = number1 / number2;
cout << quotient << endl;
cout << setprecision(5) << quotient << endl;
cout << setprecision(4) << quotient << endl;
cout << setprecision(3) << quotient << endl;
cout << setprecision(2) << quotient << endl;
cout << setprecision(1) << quotient << endl;*/
double dollars = 24.51;
cout << dollars << endl; // 顯示 24.51
cout << setprecision (5) << dollars << endl; // 顯示 24.51
return 0;
}
需注意以下
- setprecison(n)設置精度函數,一次對後面所有數字均有效,除非後面再次設置纔會更改
- 單純的輸入setprecison包括小數和整數部分一共的位數
- 頭文件加上
#include<iomanip>
控制小數
在cout語句後加入fixed(個人習慣簡單)其他三種也可以
//第一種寫法
cout<<setiosflags(ios::fixed)<<setprecision(2);
//第二種寫法
cout.setf(ios::fixed);
cout<<setprecision(2);
//第三種寫法
cout<<fixed<<setprecision(2);
- 保留幾位小數setprecison(n)n就寫多少
- 同樣一次使用對後續都有效
#include<iostream>
#include<iomanip>
using namespace std;
int main(void)
{
float a=3.1415926;
float b=3.13434343;
float c=4.6557646;
cout<<a<<endl; //編譯器默認6位有效數字,不同編譯器可能不同
cout<<fixed<<setprecision(4)<<a<<endl;//僅輸出四位小數
cout<<b<<endl;//同時b也會受到上面一行代碼的影響
cout<<setprecision(6)<<c<<endl;//重新設置成6 位
}
- 請注意最後小數位數設置爲6時使用setprecision函數而c中小數第6位將進行四捨五入
C語言
解析語法
- 1.若跟的是f或lf,即是%7.2f或%7.2lf,輸出7位對應的浮點數,小數點後取2位,不足用0補齊 右對齊。若對應的浮點數超過了7位則按實際位數輸出。
- 2.需要注意的是小數點也屬於1個寬度
- 3.同樣保留幾位數後面仍然數字依舊會四捨五入
#include<stdio.h>
int main ()
{
float a=5.1523;
float b=6.3;
float c=5.1565;
printf("%7.2f\n",a);
printf("%6.2f\n",b);
printf("%6.2f\n",c);
return 0;
}
2.若跟的是s,即%7.2s,則指示輸出函數輸出與之對應的字符串,取字符串前2位佔寬7位右對齊。
#include <stdio.h>
int main()
{
printf("%3s,%7.2s,%.4s,%-5.3s\n","CHINA","CHINA","CHINA","CHINA");
return 0;
}
%3s, 格式輸出字符串,右對齊,超出3個長度的,就全部輸出;
%7.2s, 輸出字符串佔7個位置,右對齊,左補空格,輸出2個字符;
%.4s, 僅輸出4個字符,佔位4個位置,右對齊;
%-5.3s: 輸出3個字符,佔位5個位置,左對齊右補空格。