代码之家  ›  专栏  ›  技术社区  ›  user82238

用双精度表示整数

  •  19
  • user82238  · 技术社区  · 15 年前

    例如,一个八字节的双精度计数器能否完全精确地保持一个四字节无符号整数的数字范围?

    这可以归结为,如果两字节浮点值可以保持一字节无符号整数的范围。

    5 回复  |  直到 8 年前
        1
  •  44
  •   paxdiablo    5 年前

    (a) 位可用于精度,32位整数只需要32:-)


    (a) 1

        2
  •  7
  •   1800 INFORMATION    15 年前

    对浮点(或双精度)保证精确表示不需要截断的任何整数。对于double,有53位的精度,因此这足以精确表示任何32位整数,而且64位整数的比例也很小(从统计学上讲)。

        3
  •  2
  •   Matt J Jørgen Fogh    15 年前

    精确表示的范围取决于实现中的许多因素,但可以通过以下方式对其进行下限:如果指数字段设置为0,则可以精确表示尾数字段宽度以内的整数(假设有符号位)。对于IEEE 754双精度,这意味着您可以精确表示52位数字。一般来说,尾数将超过整个结构宽度的一半。

        4
  •  -5
  •   Frank Krueger    15 年前

    当谈到浮点数时,我不会使用“完全精确”这个词。但是是的,一个 double

    我不知道其他哪些浮点和整数的组合也是如此。

    实际上,您不想麻烦使用高于您的机器支持的浮点,所以只需切换到带bignum的rational算术。这样,就保证了精度。