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
廣告