整数存储为float

时间:2013-09-21 15:30:15

标签: math ieee-754

我对整数和浮点数有一些疑问:

  1. 我可以将每个 32位无符号整数值存储到 64位 IEEE浮点值中(这样当我将double值赋值回一个int int将包含原始值)?

  2. 无法存储在 32位 IEEE浮点值中的最小(数量级)正负整数值(与1中的定义相同)?< / p>

  3. 这些问题的答案是否取决于使用的语言?

  4. //编辑:我知道这些问题听起来有点像某些测试,但我问这些事情是因为我需要对数据格式定义做出一些决定

1 个答案:

答案 0 :(得分:3)

  1. 是的,您可以将32位整数存储为64位double而不会丢失信息。尾数有53位精度,这就足够了。
  2. 32位float具有24位尾数,因此具有唯一表示的最大和最小整数是2 ^ 24-1和-2 ^ 24 + 1(16777215和-16777215)。更多的数字没有独特的代表性;例如16777216 == (float)16777217
  3. 如果您认为该语言遵循IEEE-754,则不依赖于语言。