C++ 中的浮點數比較


本文介紹如何使用 C++ 比較兩個浮點資料。浮點比較與整數比較不同。

要比較兩個浮點值,必須考慮比較的精度。例如,如果兩個數字為 3.1428 和 3.1415,則它們的精度為 0.01 時相同,但之後,例如 0.001 時,它們並不相同。

要根據此準則進行比較,我們將找到將一個浮點數減去另一個浮點數後的絕對值,然後檢查結果是否小於精度值。透過此方法,我們可以判定它們是否相等。

示例

#include <iostream>
#include <cmath>
using namespace std;
bool compare_float(float x, float y, float epsilon = 0.01f){
   if(fabs(x - y) < epsilon)
      return true; //they are same
      return false; //they are not same
}
int main() {
   float x, y;
   x = 22.0f/7.0f;
   y = 3.1415f;
   if(compare_float(x, y)){
      cout << "They are equivalent" << endl;
   } else {
      cout << "They are not equivalent" << endl;
   }
   if(compare_float(x, y, 0.001f)){
   cout << "They are equivalent" << endl;
   } else {
      cout << "They are not equivalent" << endl;
   }
}

輸出

They are equivalent
They are not equivalent

更新於: 2019 年 7 月 30 日

13K+ 瀏覽量

開啟你的 事業

透過完成課程獲得認證

開始
廣告