【问题标题】:Is there anything special about the number 308? [duplicate]308这个数字有什么特别之处吗? [复制]
【发布时间】:2021-06-10 23:44:05
【问题描述】:

所以有一天我在做实验(就像任何其他优秀的程序员一样),我发现了这个:

>>> 1e308
1e+308
>>> 1e309
inf

发生了什么事?首先,308的因数是2、2、7、11。

进一步的调查结果:

>>> 1.7976931348623158075e308 # No, I didn’t copy it incorrectly
1.797693134862315e+308
>>> 1.79769313486231581+308
inf

那么发生了什么?一个大得离谱的数字和一个小数点超过 10 个的同样奇怪的数字之间似乎没有任何关系。

另外,所有这些都是使用repl python 控制台,所以其他可能会有所不同。

【问题讨论】:

    标签: scientific-notation


    【解决方案1】:

    IEEE-754 中的双精度浮点数具有 11 位指数和 53 位尾数。 11 位指数意味着我们从 2**(-1023) 到 2**+1023。 2**1023 恰好是 10**308。

    每个十进制数字大约有 3.23 位。 53 位尾数可为您提供大约 17 位的精度。

    如您所见,适合双精度的最大数字是 1.7976931348623158075E+308。

    我推荐https://en.wikipedia.org/wiki/IEEE_754

    【讨论】:

    • 啊,可是精度只有小数点后15位……
    • 好的,你得到 15.9 位数。快 16 岁了。不是 17 岁。我夸大了。
    • 另外,为什么1. 7976931348623158E+308 是完全可能的,却显示1. 7976931348623157E+308?
    猜你喜欢
    • 2011-10-20
    • 1970-01-01
    • 2016-04-01
    • 2013-05-11
    • 2019-11-15
    • 2013-08-04
    • 1970-01-01
    • 2013-10-01
    • 2011-04-18
    相关资源
    最近更新 更多