Предполагая IEEE-754 соответствие, является ли поплавок гарантированным сохранением при транспортировке через двойной?
Другими словами, всегда будет выполняться следующее утверждение:
int main()
{
float f = some_random_float();
assert(f == (float)(double)f);
}
Предположим, что f
может получить любое из специальных значений, определенных IEEE, таких как NaN и Infinity.
В соответствии с IEEE существует ли случай, когда утверждение будет выполнено, но точное представление на уровне бит не сохраняется после переноса через double?
Фрагмент кода действителен как для C, так и для С++.