Советы по Delphi

         

Сравнение чисел с плавающей точкой


Олег Кулабухов отвечает на вопрос:

У меня два числа с плавающей запятой неправильно сравниваются! Задаю if d1=d2 ..., или if d1<>d2, а результат иногда неверный. В чем дело? Это баг Дельфи?

Нет. Просто в отличие от целочисленных IEEE числа с плавающей запятой являются приблизительными значениями и вы не должны использовать = или <> для сравнивания двух чисел такого типа. Вместо этого вычтите из одного числа другое и сравните разницу с очень малой величиной.

Например.

    if abs(d1-d2) < 0.00001 then
ShowMessage('D1 и D2 равны');

[001807]



Содержание раздела