非常非常长的小数的算术运算

时间:2009-05-04 22:17:15

标签: implementation long-integer bignum bigint

我一直很好奇:如何在非常长的小数上执行算术运算 - 例如,将pi计算到第3000个小数位(特别是在命令式语言中)?

3 个答案:

答案 0 :(得分:3)

使用支持任意精确数字的语言或库......?

在Python中,int会自动提升为任意大小的long。您可以使用第二个值来跟踪要移位的小数位数,以获得一种任意精度浮点数。

在Java中,您可以使用BigDecimal类,它表示“不可变,任意精度的有符号十进制数”。

我确信其他语言中还有其他例子。

答案 1 :(得分:3)

对于不支持bignums计算的语言,通常有库。例如,您可以查看GMP。这些文档将为您提供一些典型的算法方法。

快速制作bignum算法很困难,因此有一些非常复杂的算法......

答案 2 :(得分:0)

您必须使用数字级别的数据(例如,递增地或确定地计算每个数字)或定义具有足够位数的新数据结构以提供足够的精度。