gpt4 book ai didi

floating-point - 使用两个整数的二进制 float ?

转载 作者:行者123 更新时间:2023-12-03 20:21:19 25 4
gpt4 key购买 nike

今天我学到了一些关于浮点数如何用二进制表示的知识。
好吧,我明白为什么 IEE-754 技术标准可以智能地使用相对较少的位存储大量数字。我也明白为什么有时将每个符号表示为四个 4 位(就像你可以做我 Cobol,对吗?),当你想要非常精确的数字时是有用的。

无论如何,我的问题是,“只是”将浮点数存储为两个整数不是更方便吗?例如,您可以将逗号前的数字表示为 34 位整数,将逗号后的数字表示为 30 位整数。那么你能写出+-85亿范围内的任何数字,大约有9位小数,对吗?

与 double 浮点数相比,它仍然是一个相对较小的数字范围,但据我所知,它比 Cobol 方式更好?

谢谢你。

最佳答案

浮点数的优点是:

  • 它们允许大量的数字。如您所建议的,32 位浮点数的范围远大于 32.32(总共 64 位)定点数。
  • 它们具有一致的精度——一个 32 位浮点数在其几乎所有范围内的精度至少为 800 万分之一(当非常接近于零时它会失去精度)。
  • 它们具有无穷大(处理溢出)和非数字(处理未定义的计算,例如零除以零)的特殊值。

  • 相比之下,定点数的范围非常有限,只能在有限的范围内精确,并且缺少无穷大和非数字的特殊值。考虑这个计算来计算向量的长度:
    return sqrt(vec.x * vec.x + vec.y * vec.y);

    即使最终结果合适,此计算也可能上溢或下溢,因为 sqrt 的参数的指数大约是最终结果的两倍。这个问题在使用 float 或 double 时通常无关紧要,因为它们的范围非常大,但是对于定点格式,这个问题很容易解决。假设采用 32.32 定点格式,则很难计算出短至 70,000 个单位的向量的长度。

    更糟糕的是,没有方便的方法来指示计算已经溢出。

    此外,定点数学没有硬件支持,这使得某些运算的效率较低。

    也就是说,定点数学在某些特定情况下绝对有意义。它通常用于存储时间或世界坐标,其中一致的精度(而不是一致的相对精度)是一个好处。然而,对于通用计算,定点数学很麻烦且容易出错。

    关于floating-point - 使用两个整数的二进制 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20645695/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com