大型双打/浮动/数字

Large doubles/float/numbers

本文关键字:浮动 数字 大型      更新时间:2023-10-16

假设我有一个很大的浮点数,比如小数点后1万亿位。很明显长双精度不能承受这个。让我们假设我有一台电脑有足够的内存来容纳它。你是怎么做到这种事的?

你需要任意精度的算术

任意精度数学

说"任意精度算术"(或类似的东西)很容易,但我认为值得补充的是,很难想象如何将接近这个大小的数字使用。

举个例子:目前对宇宙大小的估计在1500 - 2000亿光年附近。在光谱的另一端,估计单个电子的直径略小于1大气压计。1光年大约是9.46 × 1015米(为简单起见,我们将其视为1016米)。

那么,让我们以1个大气表为单位,计算出这个单位中宇宙直径的数字的大小。1018单位/米* 1016米/光年* 1011光年/宇宙直径=约45位数字,以电子直径的单位表示宇宙的直径。

即使我们继续下一步,用超弦的理论大小来表示它,并添加一些额外的数字,以防目前的估计偏离几个数量级,我们最终仍然会得到一个大约65位的数字。

这意味着,例如,如果我们知道宇宙的直径和一条超弦的大小,并且我们想用超弦的直径来计算宇宙的体积,我们最大的中间结果将是600-700位左右的数字。

考虑另一个突出的点:如果你要编程一台运行在10ghz频率上的64位计算机,除了计数什么都不做——每个时钟周期增加一次寄存器——它将花费大约1400年的时间来循环64位数字,所以它再次缠绕到0。

最重要的是,很难找到借口(更不用说真正的理由)来执行接近数百万、数十亿/百万或数万亿/数十亿的数字的计算。宇宙没有那么大,没有那么多原子,等等。

听起来像是发明对数的目的。

如果你不知道你打算怎么处理这个数字,就不可能准确地说出如何表示它。