有关32位浮点值的问题

时间:2014-09-26 22:02:33

标签: floating-point integer

所有16位无符号整数(无符号短整数)值是否可以完全存储在32位浮点值中? 是否可以将所有32位无符号整数(unsigned int)值完全存储在32位浮点值中? 以下哪个数字可以用32位浮点值完全表示? 1.648,2.75,2.125,10.999,9.351,0.625

1 个答案:

答案 0 :(得分:1)

  • -2 24 和2 24 之间的所有整数都可以表示为单精度浮点数。
  • -2 24 -1和2 24 +1都不能表示为浮点数。

因此,所有无符号16位整数都可以完全表示为浮点数,但不是所有无符号32位整数。

解释是一些位模式用于表示小数,例如0.125和1.5,因此对于整数,可以使用少于2个 32 位模式。

您选择的编程语言中的简单程序可以告诉您1.648,2.75,2.125,10.999,9.351,0.625中的哪一个可以精确表示为单精度:打印到26个有效十进制数字(例如,格式为{ {1}}使用类似%.25e的函数),printf的值,...

当您在大多数编程语言的程序中键入浮点常量1.648f时,它将转换为最接近1648/1000的单精度浮点数。如果此数字打印为1.648f,则表示数字1.648可以完全表示为浮点数。如果它打印为其他东西,那么1.648是不可表示的(并且输出会告诉你最近的浮点数到底有多远)。