float f = 3.4028235E38F;
会编译得很好但是
float f = 3.4028235E38;
抛出此错误:
possible loss of precision
在这段代码中:
我本来期望正好相反,因为浮点文字默认是双精度的,应该更精确。
float f = 3.4028235E38F;
会编译得很好但是
float f = 3.4028235E38;
抛出此错误:
possible loss of precision
在这段代码中:
我本来期望正好相反,因为浮点文字默认是双精度的,应该更精确。
因为浮点数默认是 type double
。要使其成为浮点数,您需要附加一个F
. 您在以下作业中遇到错误:
float f = 3.4028235E38;
因为精度比浮点数高一倍。因此,可能会损失精度。
我本来期望正好相反,因为浮点文字默认是双精度的,应该更精确。
让我们检查您的数字的二进制表示,直到双精度:
0x47EFFFFFE54DAFF8 = 01000111 11101111 11111111 11111111
11100101 01001101 10101111 11111000
现在因为float
是单精度 32 位浮点值。它不能存储所有双精度值,即双精度 64 位浮点值。