[TIL]ダベさん14日目


関係演算子3 5

  • 浮動小数点では、計算時に誤差が発生します.
  • 社がプロジェクトを行ったとき、このような問題が発生したことがあります.Appsilonを使う方法が思いついたらもっと良かったのにと残念に思いました.とても良い講座です.
  • #include <iostream>
    #include <cmath>
    
    int main()
    {
    	using namespace std;
    
    	int x, y;
    	cin >> x >> y;
    	cout << "your input Values ard : " << x << " " << y << endl;
    
    	if (x == y)
    		cout << "equal" << endl;
    	if (x != y)
    		cout << " NOT equal" << endl;
    	if (x > y)
    		cout << "x is greater than y" << endl;
    	if (x < y)
    		cout << "x is greater than y or eqqual to y" << endl;
    	if (x >= y)
    		cout << "x is less than or equal y" << endl;
    
    	double d1(100 - 99.99); // 0.001
    	double d2(10 - 9.99); // 0.001 // 부동 소수점의 경우 다른 같은 값이라도 미세한 차이가 생길 수 있다.
    
    	const double epsilon = 1e-10; // 앱실론을 결정하는 것은 그 상황에 따라 다르다. 이런식으로 비교하는것이 좋다.
    
    	cout << std::abs(d1 - d2) << endl;
    
    	if (std::abs(d1 - d2) < epsilon)
    	{
    		cout << "equal" << endl;
    	}
    	else 
    		cout << "not equal" << endl;
    
    
    
    
    	return 0;
    }