Russian Qt Forum

Программирование => С/C++ => Тема начата: Nidxogg от Март 27, 2015, 20:01



Название: Сравнение чисел с плавающей точкой
Отправлено: Nidxogg от Март 27, 2015, 20:01
Подскажите пожалуйста, можно ли как-то сравнить 2 числа с плавающей точкой с точностью до какого-то знака?
Или отсечь все лишнее после какого-то знака.


Название: Re: Сравнение чисел с плавающей точкой
Отправлено: _Bers от Март 27, 2015, 21:35

Код:
// laxity  - погрешность

if( a-b< laxity )
    std::cout<<"можно считать что a и b равны\n";
else
    std::cout<<"a != b\n";


Название: Re: Сравнение чисел с плавающей точкой
Отправлено: fdfsdfgjfh от Март 27, 2015, 21:54
я всегда сравниваю так:
Код:
if ( fabs ( a - b ) < DBL_EPSILON )
    std::cout<< "equal"<< std::endl;
else
    std::cout<< "not equal"<< std::endl;


Название: Re: Сравнение чисел с плавающей точкой
Отправлено: Igors от Март 28, 2015, 07:32
Подскажите пожалуйста, можно ли как-то сравнить 2 числа с плавающей точкой с точностью до какого-то знака?
Или отсечь все лишнее после какого-то знака.
Посмотрите qFuzzyCompare. Смысл в том что "какой-то знак" не фиксирован. Т.е. для больших чисел допускается бОльшая погрешность и наоборот