将无符号long long转换为float并丢失精度

jvc*_*jvc 1 c floating-point unsigned-long-long-int

我有两个未签名的长号l1l2.我将这些数字转换为浮动并将它们保存为f1f2.

f1 = (float) l1;
f2 = (float) l2;
Run Code Online (Sandbox Code Playgroud)

现在考虑l1> l2一些任意数量,比如100.

是否会出现f1< f2?(这里f1转换的l1大于l2).如果是的话,你能否证明如何找到这样的号码?

sizeof(float) = 4 and sizeof(unsigned long long) = 8.
Run Code Online (Sandbox Code Playgroud)

Pas*_*uoq 6

可能存在f1 <f2的情况

否:对于任何舍入模式,从整数到浮点的转换正在增加.只要你不改变l1和l2的转换之间的舍入模式,f1和f2的顺序与l1和l2相同(但它们可能相等,而l1和l2不同).