Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จะเปรียบเทียบ float และ double ใน C ++ ได้อย่างไร


การเปรียบเทียบโฟลตและตัวแปรคู่ขึ้นอยู่กับเป้าหมายสุดท้ายของคุณ หากคุณต้องการฟังก์ชันที่รันได้โดยไม่มีรายละเอียดมากเกินไป และจะไม่มีปัญหาในการคำนวณที่ไม่ถูกต้อง คุณสามารถใช้ฟังก์ชันต่อไปนี้ -

ตัวอย่าง

#include<iostream>
using namespace std;

// Define the error that you can tolerate
#define EPSILON 0.000001

bool areSame(double a, double b) {
   return fabs(a - b) < EPSILON;
}

int main() {
   double a = 1.005;
   double b = 1.006;
   cout << areSame(a, a);
   cout << areSame(a, b);
}

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ -

1
0

ฟังก์ชันนี้ใช้ความทนทานต่อข้อผิดพลาดและตรวจสอบว่าเกณฑ์มีค่ามากกว่าความแตกต่างระหว่างตัวเลขที่คุณกำลังเปรียบเทียบหรือไม่ หากคุณต้องการบางสิ่งที่แม่นยำกว่านี้ คุณควรอ่านโพสต์บล็อกที่ยอดเยี่ยมนี้:https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/