Floating point 为什么双打是如何工作的

Floating point 为什么双打是如何工作的,floating-point,double,theory,Floating Point,Double,Theory,我知道这可能是一个常见的问题,但我从未找到答案(也许这与不知道如何正确搜索谷歌有关,所以如果有人能给我一个参考资料,我将删除这个问题) 为什么double的工作原理是,用2的幂反比表示小数点的右侧,用2的幂表示小数点的左侧?我知道它允许代表非常大的数字,但还有其他优势吗?NET框架有可用的数据结构,使用它似乎更合乎逻辑,因为它是我们用人类符号表示数字的方式 真的,我的问题是,为什么双精度是按原来的方式创建的,而不是最初创建类似十进制的东西(这似乎不太常见)。你的困惑似乎是没有根据的。小数点的右侧

我知道这可能是一个常见的问题,但我从未找到答案(也许这与不知道如何正确搜索谷歌有关,所以如果有人能给我一个参考资料,我将删除这个问题)

为什么double的工作原理是,用2的幂反比表示小数点的右侧,用2的幂表示小数点的左侧?我知道它允许代表非常大的数字,但还有其他优势吗?NET框架有可用的数据结构,使用它似乎更合乎逻辑,因为它是我们用人类符号表示数字的方式


真的,我的问题是,为什么双精度是按原来的方式创建的,而不是最初创建类似十进制的东西(这似乎不太常见)。

你的困惑似乎是没有根据的。小数点的右侧始终表示为基数的逆幂,左侧始终表示为基数的幂。这同样适用于基数10和基数2。二进制浮点数存储一个指数,该指数控制小数点在尾数上的位置

至于它们存在的原因:二进制浮点表示法有两个方便的特性:

  • 它相对较快,因为它使用二进制算法
  • 它可以表示非常大或非常小的数字,具有一定的准确性

  • 这些属性使它们非常适合于物理计算,因为最后一位的小错误无关紧要,但却使它们无法用于货币应用程序(在需要十进制的地方,尽管计算速度要慢得多)。

    FP格式将最大精度压缩为一个“字”或两个“单词”对象,同时添加一个指数,以便进行科学计算1。涉及大值或小值时,可以以相同的精度进行。因为对象适合于字,它们可以适合于寄存器,而且它们在CPU硬件和GPU单元上都受支持,所以它们非常快

    十进制格式更慢、更大,硬件几乎不支持它们,但它们也不需要复杂的二次计算,所以这无关紧要。我们可以很容易地计算软件中的bean。十进制字符串的一个优点是,我们在现实生活中写的数字(0.10、0.11、0.12……)可以精确地表示出来,这对会计工作非常有帮助。(奇怪的是,由于我们使用以10为基数的IRL,几乎所有我们在商业中写的数字实际上都不能用以2为基数的分数表示。)

    任何一种格式都可以用于相反的应用程序,只要有足够的混乱和仔细的编程,但没有太多的意义


    一,。事实证明,即使精度有限,也没有任何物理常数可以接近双精度数据类型的精度。因此,它们正是这些类型的计算所需要的。这些日子快得难以置信了。如果你能把每一个GPU放回几年前的时间,它将被列为世界上最快的超级计算机CPU。

    重复的问题。这里有很多问题,更不用说整个互联网了()。此外,该格式不适合此网站。。。但要提供一个答案:我们的计算机是二进制机器,被设计成高效地处理二进制数据,这就是为什么我们有二进制浮点结构。事实上,有些东西是“人做的”,这并不意味着它是合乎逻辑的。看看我们用10个不同的字符来记数字而不是用完整的字母表浪费了多少空间!通常更符合逻辑的是工程师的工作,而不是人类。XD如果对
    double
    值进行缩放,使最小货币单位的整数表示为整数
    double
    值,并在适当的时间将其四舍五入到最接近的单位,则它们将与类似处理的
    十进制
    值一样精确。此外,如果执行不存在的
    Decimal
    除法而不舍入结果,
    Decimal
    将表现为浮点类型,并停止遵守(a+b)+c应等于a+(b+c)的规则。可以将1.23美元表示为
    123.0
    而不是
    123.0
    这一事实很方便,但金融数学确实应该使用定点类型。