长期int的限制是什么?

时间:2016-01-17 19:27:18

标签: c++

我发现long long int的数值限制不足。 C ++中还有其他数字类型,比如java中的大整数吗?

我最近偶然发现了这个问题,并且不知道如何解决这个问题..... https://blog.codechef.com/2009/07/02/tutorial-for-small-factorials/

3 个答案:

答案 0 :(得分:11)

unsigned long long int是标准C ++中的最大整数类型 (它可以保存0到18的数字446 744 073 709 551 615), 如果你想要更大的那些,你可能需要搜索一些像这样的bignum库: http://www.ttmath.org/

答案 1 :(得分:5)

类型名称 - long long

字节 - 8

值范围 - -9,223,372,036,854,775,808至9,223,372,036,854,775,807

参考:Microsoft

答案 2 :(得分:3)

您可以使用C ++库<boost/multiprecision/cpp_int.hpp>解决此类问题。

例如:

#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
namespace mp = boost::multiprecision;
using namespace std;
int main()
{
    mp::cpp_int f = 1;
    for(int i = 1; i <= 100; i++)
        f *= i;
    cout << "100! = " << f << '\n';
}

这将提供输出

100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

要了解有关C ++ Boost库的更多信息,可以参考herehere