【发布时间】:2016-01-17 19:27:18
【问题描述】:
我发现 long long int 的数值限制不足。 C++ 中是否还有其他数字类型,例如 java 中的大整数?
我最近偶然发现了这个问题,不知道如何解决...... https://blog.codechef.com/2009/07/02/tutorial-for-small-factorials/
【问题讨论】:
-
不,没有任何标准的 bigint 类型。有一些库支持这种做法。
-
C++有几个不同的“大整数”选项。也许看看这个:gmplib.org -
考虑
double或decimal。 -
@Zdenek:如果
long long int太小,使用double会有什么帮助?它只支持最大为 2^53 - 1 的所有整数(之后,您开始失去精度)---这小于long long int必须支持的最小值。这是假设double是 IEEE 64 位浮点格式(例如,它们可以是 32 位和非 IEEE)。此外,C 中没有decimal类型。 -
您假设 OP 需要避免下溢。情况可能并非如此。任何浮点数都可以表示比整数更大的数字范围,这可能是他需要的。你当然是对的,64 位浮点数只有 53 位尾数。
标签: c++