Сравнение чисел с плавающей точкой
Автор: Олег Кулабухов
У меня два числа с плавающей запятой неправильно сравниваются!
Задаю if d1=d2 ..., или if d1<>d2, а результат иногда неверный. В чем
дело? Это баг Дельфи?
Нет. Просто в отличие от целочисленных IEEE числа с плавающей запятой
являются приблизительными значениями и вы не должны использовать = или <>
для сравнивания двух чисел такого типа. Вместо этого вычтите из одного числа
другое и сравните разницу с очень малой величиной.
Например.
if abs(d1-d2) < 0.00001 then
ShowMessage('D1 и D2 равны');
|
|