整数存储为float

use*_*931 5 math ieee-754

我有一些关于整数和浮点数的问题:

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

  2. 什么是无法存储在32位 IEEE浮点值中的最小(幅度方向)正整数值和负整数值(与1中的定义相同)?

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

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

Jon*_*oni 3

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