Эти функции:
Код: Выделить всё
std::nan(const char*)Код: Выделить всё
std::nanf(const char*)Код: Выделить всё
std::nanl(const char*)Насколько я понимаю, «тихий NaN» — это стандартный битовый шаблон, определенный в IEEE 754 и гарантированно переносимый. Это означает одинаковое поведение и интерпретацию во всех системах, соответствующих стандарту IEEE 754.
Однако существует много других возможных значений NaN, поскольку мантисса может иметь множество альтернативных битовых комбинаций помимо тихой битовой комбинации NaN. Насколько я понимаю, они не являются переносимыми.
Это говорит о том, что при сериализации значений с плавающей запятой с использованием двоичного протокола неправильно просто копировать байты, игнорируя очевидную проблему порядка байтов.
Это говорит мне о том, что любые данные с плавающей запятой сначала должны быть переданы через функцию, которая «нормализует» все значения NaN к тихому NaN.
Правильно ли это?
/>Если да, то как это сделать? Мне не известна ни одна стандартная библиотечная функция на C++ или любом другом языке, реализующая эту операцию «нормализации NaN».
Подробнее здесь: https://stackoverflow.com/questions/798 ... lization-r
Мобильная версия