Вопрос: как проверить, что число имеет значение NaN?
Комментарий: NaN (Not-a-Number) - это особое состояние числа с плавающей точкой, возникающее при специфических (в большинстве случаев - некорректных) математических операциях. Подробнее см. в статье на Википедии.
Ответ: например, можно воспользоваться функцией IsRealNaN из библиотеки FloatingPointUtils:
Код:VAR rVar: REAL; xIsNaN: BOOL; END_VAR rVar := SQRT(-1.0); // генерируем NaN xIsNaN := FPU.IsRealNaN(rVar);
или с помощью конвертации значения в строковый вид:
Код:VAR rVar: REAL; sVar: STRING; xIsNaN: BOOL; END_VAR rVar := SQRT(-1.0); // генерируем NaN sVar := REAL_TO_STRING(rVar); xIsNaN := (sVar='#NaN');
Можно также воспользоваться особым свойством NaN - оно не равно ни одному числу, в т.ч. и самому себе:
Код:VAR rVar: REAL; xIsNaN: BOOL; END_VAR rVar := SQRT(-1.0); // генерируем NaN xIsNaN := (rVar<>rVar);




