大双打/漂浮/数字

时间:2011-04-23 22:29:54

标签: c++ c math numbers

假设我有一个巨大的浮动数字,比如一万亿个小数位。很明显长双不能保持这一点。我们还假设我有一台拥有足够内存的计算机来容纳它。你怎么做这样的事情?

4 个答案:

答案 0 :(得分:7)

答案 1 :(得分:7)

答案 2 :(得分:3)

很容易说“任意精确算术”(或类似的东西),但我认为值得补充的是,很难设想如何将数字放在接近这个尺寸的地方使用。

仅举例来说:目前对宇宙大小的估计在150-200亿光年附近。在光谱的另一端,估计单个电子的直径略小于1个。 1光年约为9.46x10 15 米(为简单起见,我们将其视为10 16 米)。

所以,让我们以1 atometer为单位,计算出该单位宇宙直径的数量大小。 10 18 单位/米* 10 16 米/光年* 10 11 光年/宇宙直径=约45位数字来表示宇宙直径,大致是电子直径的单位。

即使我们进行下一步,并根据超弦的理论大小表示,并添加了一些额外的数字,以防万一当前的估计值偏差几个数量级,我们仍然会结束大约65位左右的数字。

这意味着,例如,如果我们知道宇宙的直径为单个超弦的大小,并且我们想要根据超弦直径来计算类似宇宙的体积,我们最大的中间结果将是某种东西像600-700位左右。

考虑另一个重点:如果你要编程运行在10 GHz的64位计算机,除了计数之外什么都不做 - 每个时钟周期增加一次寄存器 - 它需要大约1400年才能完成只需循环显示64位数字,使其再次回到0。

最重要的是,难以置信很难找到借口(更不用说真正的理由)来计算接近数百万,数十亿/毫秒或数万亿/数十亿的数字。宇宙不是那么大,不包含那么多原子等等。

答案 3 :(得分:0)

听起来像是为logarithms发明的。

如果不知道你打算用这个号码做什么,就不可能准确地说出如何表示它。