0

我们在程序中进行的数值运算受到语言为给定数据类型(或者硬件支持)指定的字节数的限制。假设我可以使用整数来计算我的薪水(即使“短”也足以满足一年的收入!!!;))但不能对比尔·盖茨的财富做同样的事情。因此,我们会选择 long long 之类的东西。但是,我们不是仍然受制于给我们的比特数吗?

那么,如果我在软件中模拟数值运算呢?说一个抽象的类,可以对具有 1000 位数字的数字进行数值运算......当然它会太慢,但我不太担心复杂性,而是更多地关注可计算性......

也许我可以用它在几个月内将 PI 计算到 1000 位的精度,或者在几年内计算出梅森素数并带回家 10 万美元;)

所以现在我的问题是,1)是否已经有任何这样的库可以做这种事情(在 C/C++ 中)。2)如果我要实施一个,你对我有什么建议吗?(+、-、*、/、%、<<、>> 操作我猜应该足够了)


PS:

  1. 我是 C/C++ 程序员。

  2. 这个限制从我的学生时代就开始困扰我。

4

1 回答 1

2

这种数据类型被称为任意精度数。在 Java 中,有一些类BigDecimal可以BigInteger处理数字级别的基本操作(+、-、*、/)。它们没有“内置”大小限制。它们实际上并没有那么慢,并且被用于许多现实世界的领域。

C/C++ 没有内置它,但那里有很多库。在此处查看列表: http ://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic#Libraries

于 2010-10-29T20:02:46.170 回答