Преобразование без знака long long в плавающее и теряющее точность

У меня есть два длинных номера без знака l1 а также l2, Я бросил эти числа на плаву и сохрани их как f1 а также f2,

f1 = (float) l1;
f2 = (float) l2;

Теперь рассмотрим l1 > l2 на произвольную сумму, скажем, 100.

Может ли быть такой случай, что f1 < f2?. (Вот f1 конвертируется из l1 который больше чем l2). Если да, не могли бы вы продемонстрировать, как найти такой номер?

sizeof(float) = 4 and sizeof(unsigned long long) = 8.

1 ответ

Решение

Может ли быть такой случай, что f1

Нет: для любого режима округления преобразование из целого числа в число с плавающей точкой увеличивается. Пока вы не измените режим округления между преобразованием l1 и преобразованием l2, f1 и f2 находятся в том же порядке, что и l1 и l2 (хотя они могут быть равны, где l1 и l2 были разными).

Другие вопросы по тегам