C++中浮點數的精度 (floor(),ceil(),trunc(),round() 和 setprecision())
浮點數的精度是指浮點數可以保持小數點後數值的準確度。
例如,10/6 = 1.6666666… 這些具有迴圈小數,需要無限的記憶體空間來儲存。
因此,為了避免在這種情況下記憶體溢位,編譯器會為數字設定精度限制。對於 C++ 中的浮點值,此精度設定為小數點後 6-7 位,如果小數迴圈,則會丟棄該值。
因此,為了避免在丟棄發生時出現重大損失,有一些方法和庫支援浮點值的精度。在這裡,我們將討論它們:
floor()
floor() 函式是一個向下取整函式,它將數字四捨五入到小於該數字的最近整數。
它始終返回一個整數,該整數比浮點數的整數部分小 1。
庫:math.h
示例
#include<iostream>
#include<math.h>
using namespace std;
int main() {
float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
cout<<"Values are : \n";
cout<<"Number 1 : "<<floor(number1)<<endl;
cout<<"Number 2 : "<<floor(number2)<<endl;
cout<<"Number 3 : "<<floor(number3)<<endl;
cout<<"Number 4 : "<<floor(number4)<<endl;
return 0;
}輸出
Values are : Number 1 : 0 Number 2 : 234 Number 3 : -4 Number 4 : -1
ceil()
ceil() 函式是一個向上取整函式,它將數字四捨五入到大於該數字的最近整數。
它始終返回一個整數,該整數比浮點數的整數部分大 1。
庫:math.h
示例
#include<iostream>
#include<math.h>
using namespace std;
int main() {
float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
cout<<"Values are : \n";
cout<<"Number 1 : "<<ceil(number1)<<endl;
cout<<"Number 2 : "<<ceil(number2)<<endl;
cout<<"Number 3 : "<<ceil(number3)<<endl;
cout<<"Number 4 : "<<ceil(number4)<<endl;
return 0;
}輸出
Values are : Number 1 : 1 Number 2 : 235 Number 3 : -3 Number 4 : -0
round()
round() 函式是一個四捨五入函式,它將數字四捨五入到最接近的整數,該整數可以大於或小於該數字。
它始終返回一個整數,該整數可以比浮點數的整數部分大 1 或小 1。
庫:math.h
示例
#include<iostream>
#include<math.h>
using namespace std;
int main() {
float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
cout<<"Values are : \n";
cout<<"Number 1 : "<<ceil(number1)<<endl;
cout<<"Number 2 : "<<ceil(number2)<<endl;
cout<<"Number 3 : "<<ceil(number3)<<endl;
cout<<"Number 4 : "<<ceil(number4)<<endl;
return 0;
}輸出
Values are : Number 1 : 1 Number 2 : 235 Number 3 : -3 Number 4 : -0
setprecision()
setprecision() 函式返回浮點值的正確值,精度到小數點後 n 位。N 是傳遞給 setprecision 函式的引數。
它的功能使用 fixed。
庫:iomanip
示例
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
cout<<"Nubmer 1 correct upto 0 decimals "<<fixed<<setprecision(0)<<number1<<endl;
cout<<"Nubmer 2 correct upto 1 decimals "<<fixed<<setprecision(1)<<number2<<endl;
cout<<"Nubmer 3 correct upto 4 decimals "<<fixed<<setprecision(4)<<number3<<endl;
cout<<"Nubmer 4 correct upto 3 decimals "<<fixed<<setprecision(3)<<number4<<endl;
}輸出
Nubmer 1 correct upto 0 decimals 0 Nubmer 2 correct upto 1 decimals 234.6 Nubmer 3 correct upto 4 decimals -3.3113 Nubmer 4 correct upto 3 decimals -0.913
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP