C/C++保留小數位數

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個位置,左對齊右補空格。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章