Преобразование без знака 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 были разными).