在c ++中存储和打印10+数字整数

我正在使用cout将数字打印到控制台。 我还将一个数字的值高达13亿以上,并对其进行计算。 我应该使用哪种数据类型?

当我做到以下几点时:

int a = 6800000000;
cout << a;

它打印-1789934592。

谢谢。


long long最多可以容纳9223372036854775807.如果你需要更大的话,可以使用类似gmp东西。


使用int64_t来保证你不会溢出。 它可从stdint.h获得。


请注意, int64_tlong long都包含在C99和C ++ 0x中,但不包含在当前版本的C ++中。 因此,使用这两种方法确实会使您的代码处于不可移植的风险中。 然而,实际上,这个风险可能已经很低了 - 当你移植你的代码的时候,可能会有更大的问题。

但是,如果您真的想确保这种可能性,您可以考虑使用双精度浮点。 与流行的观点相反,浮点类型可以完全表示整数达到一定限制的整数 - 该限制是根据FP类型尾数的大小(本质上)设置的。 double的典型实现有53位尾数,因此可以绝对精确地表示53位整数。 这支持高达9,007,199,254,740,992(这大大超过“十亿”流行含义中的任何一种)的数字。

链接地址: http://www.djcxy.com/p/69877.html

上一篇: Storing and printing 10+ digit integer in c++

下一篇: Why is my not(!) unexpected?