Math 存储为浮点的整数

Math 存储为浮点的整数,math,ieee-754,Math,Ieee 754,我有一些关于整数和浮点数的问题: 是否可以将每个32位无符号整数值存储到64位IEEE浮点值中(这样,当我将双精度值赋回int时,int将包含原始值) 什么是不能存储在32位IEEE浮点值中的最小(幅度)正整数值和负整数值(定义与1相同) 这些问题的答案是否取决于所使用的语言 //编辑:我知道这些问题听起来有点像一些测试,但我问这些问题是因为我需要对数据格式定义做出一些决定 是的,您可以将32位整数存储为64位double,而不会丢失信息。尾数有53位精度,这就足够了 32位浮点具有24位尾数,

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

  • 是否可以将每个32位无符号整数值存储到64位IEEE浮点值中(这样,当我将双精度值赋回int时,int将包含原始值)

  • 什么是不能存储在32位IEEE浮点值中的最小(幅度)正整数值和负整数值(定义与1相同)

  • 这些问题的答案是否取决于所使用的语言

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

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

  • 嘿,乔尼-这是否意味着如果我将2^24分配给一个双精度,然后分配给一个整数,整数将包含2^24-1?如果你将2^24分配给一个
    浮点,然后分配给
    int
    ,你将得到2^24。但是,如果您将2^24+1分配给一个
    float
    ,然后再分配给
    int
    ,您也会得到2^24。也就是说,如果你回到2^24,你就不知道它原来是哪个数字了。啊,是的,我的意思是浮动不是双倍。好的,这很有道理,谢谢!:)