Цитата
Цитата
Красиво работает if(my_float==0.NaN), но проверяет только на 0x7FFFFFFF, а в eeprom, сами понимаете, чаще может быть значение 0xFFFFFFFF.
Это не корректно, т.к. NaN - это не только 0x7FFFFFFF.
Т.е. тестировать на NaN через сравнение с константой некорректно.
Некорректность еще и в том, что результат операции сравнения float-оператора с НЕ-числом (это Ваша спец. константа) не дает правильного результата (для этого, т.е. грамотного управления вычислениями эти спец.константы и были введены в соотв. стандарт IEEE). Подробнее все в стандарте и можно посмотреть.
Еще один посыл. Так как сравнение float-чисел выполняется с помощью специальной библиотечной функции, то и сравнение float c NaN необходимо делать аналогично - т.е. с помощью своей функции. Starter48 прав! Можно и на асме эту функцию написать, если захотите большей эффективности.
З.Ы.: а NaN все-таки лучше не допускать в своих алгоритмах, эти константы были введены в стандарт для отладки программ, реализующих численные алгоритмы.