2010-10-29 43 views
0

我们在程序中执行的数值操作受限于语言为给定数据类型(或可能是硬件支持)指定的字节数。假设我可以用整数来计算我的薪水(甚至“短”对于一年的收入绰绰有余!!!)),但不能与比尔盖茨的财富一样。所以,我们去做很久很久的事情。但是,我们是不是仍然受到给予我们的位数的控制。仿真软件中的数字操作

那么,如果我模拟软件中的数值操作,那么该怎么办?说一个抽象的类,可以对1000位数的数字进行数字运算... 当然它太慢了,但我并不太在意复杂性,但更多的只是可计算性......

也许我可以用它在几个月内计算PI到1000位精度或几年内的Mersenne Primes,并带回家$ 100K;)

所以现在我的问题, 1)是否已有任何这样的库来做到这一点那里的东西(在C/C++中)。 2)如果我执行一个,你有什么建议吗? (+, - ,*,/,%,< <,>>操作应该足够我猜)

问候,

微内核

PS:

1)我是C/C++程序员,如果你想知道。

2)这个限制开始纠缠我从我的学校时代。

回答

2

这样的数据类型被称为任意精度数字。在Java中,有几个类BigDecimalBigInteger,它们处理数字级别的基本操作(+, - ,*,/)。他们没有“内置”尺寸限制。它们实际上并不那么慢,并且在很多现实世界的领域中使用。

C/C++没有它内置的,但也有很多图书馆在那里。在这里看到一个列表: http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic#Libraries

+0

其实,任意精度的数字是非常标准型在大多数语言整数。像C,C++,Java,C#,Objective-C这样的语言甚至不能正确地添加两个整数,这真是个例外。 – 2010-10-29 21:18:54