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

更新於:2020年2月4日

8K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告