【发布时间】:2014-11-22 00:25:46
【问题描述】:
是否可以将所有 16 位无符号整数(无符号短整数)值完全存储在 32 位浮点值中? 所有 32 位无符号整数 (unsigned int) 值都可以完全存储在 32 位浮点值中吗? 下面哪些数字可以用 32 位浮点值精确表示? 1.648、2.75、2.125、10.999、9.351、0.625
【问题讨论】:
-
课堂上没有讲过吗?
是否可以将所有 16 位无符号整数(无符号短整数)值完全存储在 32 位浮点值中? 所有 32 位无符号整数 (unsigned int) 值都可以完全存储在 32 位浮点值中吗? 下面哪些数字可以用 32 位浮点值精确表示? 1.648、2.75、2.125、10.999、9.351、0.625
【问题讨论】:
因此,所有无符号 16 位整数都可以完全表示为浮点数,但并非所有无符号 32 位整数。
解释是一些位模式用于表示小数,例如 0.125 和 1.5,因此小于 232 个位模式可用于整数。
您选择的编程语言中的一个简单程序可以告诉您 1.648、2.75、2.125、10.999、9.351、0.625 中的哪一个可以用单精度精确表示:打印,到 26 个有效十进制数字(例如,格式为 @ 987654322@ 使用类似printf 的函数),1.648f 的值,...
当您在大多数编程语言的程序中键入浮点常量 1.648f 时,它会被转换为最接近 1648/1000 的单精度浮点数。如果这个数字打印为1.64800000,这意味着数字 1.648 可以精确地表示为一个浮点数。如果它打印为其他内容,则 1.648 不可表示(并且输出会告诉您最近的浮点数恰好有多远)。
【讨论】:
f 后缀或编程语言中的等效符号来指示单精度浮点数!