【问题标题】:integer stored as float整数存储为浮点数
【发布时间】:2013-09-21 15:30:14
【问题描述】:

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

  1. 我可以将每个 32 位 无符号整数值存储到 64 位 IEEE 浮点值(这样当我将双精度值分配回int int 将包含原始值)?

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

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

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

【问题讨论】:

    标签: math ieee-754


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

    【讨论】:

    • 嘿 Joni - 这是否意味着如果我将 2^24 分配给 double 然后分配给 int,则 int 将包含 2^24-1?
    • 如果您将 2^24 分配给 float,然后分配给 int,您将得到 2^24。但是,如果您将 2^24+1 分配给 float,然后分配给 int,您也会得到 2^24。也就是说,如果你返回 2^24,你就无法知道它原来是哪个数字。
    • 啊,是的,我的意思是浮动不是双倍。好的,这是有道理的,谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    相关资源
    最近更新 更多