有没有办法在C++中存储一个1000位数?我试过将其存储为无符号长双精度,但它仍然太大了。
你可以在这里找到答案如何存储极大的数字? GMP的回答听起来是正确的,即这就是它对pi位数所做的事情https://gmplib.org/pi-with-gmp.html
#include <vector>
#include <iostream>
class large_num {
private:
int digits; // The number of digits in the large number
std::vector<int> num; // The array with digits of the number.
public:
// Implement the constructor, destructor, helper functions etc.
}
对于非常大的数字,只需将每个数字添加到向量中即可。例如,如果数字为123456,则执行num.pushback()。在这种情况下,将所有数字1、2、.. 6推入。您可以使用此方法存储极大的数字。
num
已经有了.size()
功能,所以digits
是多余的,而且另一件可能会失去同步的事情是,std::vector<int8_t>
或类似的(甚至是std::string
)将使用更少的内存。 - Tony Delroy你应该尝试这个
http://sourceforge.net/projects/libbigint/
针对这种情况,这是一个很棒的库。
另外你也可以使用boost库。
http://www.boost.org/doc/libs/1_53_0/libs/multiprecision/doc/html/boost_multiprecision/intro.html
其中最常见的之一是
https://gmplib.org/
这取决于使用情况。如果需要对其进行计算,可能应该选择大整数库。如果不需要计算,只需存储,则将其存储在数组中,每个数字存储在一个数组元素中。