一步步:
IEEE-754 32 位二进制浮点格式:
符号 1 位
有效位 23 位
指数 8 位
我)float a = 23400000000.f;
转换23400000000.f
为float
:
23,400,000,000 = 101 0111 0010 1011 1111 1010 1010 0000 0000 2
= 1.0101110010101111111010101000000000 2 • 2 34。
但是有效位只能存储该点之后的 23 位。所以我们必须四舍五入:
1.01011100101011111110101 01000000000 2 • 2 34
≈ 1.01011100101011111110101 2 • 2 34
所以,之后:
float a = 23400000000.f;
a
等于 23,399,991,808。
二)float b = a + 1;
a = 10101110010101111111010100000000000 2。
b = 10101110010101111111010100000000001 2
= 1.0101110010101111111010100000000001 2 • 2 34。
但是,同样,有效位在该点之后只能存储 23 个二进制数字。所以我们必须四舍五入:
1.01011100101011111110101 00000000001 2 • 2 34
≈ 1.01011100101011111110101 2 • 2 34
所以,之后:
float b = a + 1;
b
等于 23,399,991,808。
三)float c = b - a;
10101110010101111111010100000000000 2 - 10101110010101111111010100000000000 2 = 0
该值可以存储在float
不四舍五入的情况下。
所以,之后:
float c = b - a;
с
等于 0。