我对整数和浮点数有一些疑问:
我可以将每个 32位无符号整数值存储到 64位 IEEE浮点值中(这样当我将double值赋值回一个int int将包含原始值)?
无法存储在 32位 IEEE浮点值中的最小(数量级)正负整数值(与1中的定义相同)?< / p>
这些问题的答案是否取决于使用的语言?
//编辑:我知道这些问题听起来有点像某些测试,但我问这些事情是因为我需要对数据格式定义做出一些决定
答案 0 :(得分:3)
double
而不会丢失信息。尾数有53位精度,这就足够了。float
具有24位尾数,因此具有唯一表示的最大和最小整数是2 ^ 24-1和-2 ^ 24 + 1(16777215和-16777215)。更多的数字没有独特的代表性;例如16777216 == (float)16777217
。