哪种数据类型可以容纳10^31的十进制数

Which data type can hold 10^31 decimal number?

本文关键字:十进制数 数据类型      更新时间:2023-10-16

我必须在整数数据类型变量中保留10^31范围的十进制数据。

哪种数据类型可以容纳此范围的数字?

C++标准定义的任何整数类型都不能容纳1031。您需要任一

  • 一个128位整数(范围为1.7×1038)。为此,您必须求助于编译器特定的功能(例如Clang和GCC中的__int128_t
  • 或者来自第三方库的任意精度整数类(checkout GMP)

没有一个基本类型整数类型可以保证保持这么大的范围。你可以发现气候的局限性。它们被表示为2的幂,但很容易转换,2^n大约是10^n/3.3,所以long long会让你达到10^19左右。

任何浮点类型都不能以整数精度保存该范围的值(它们太小)。

您可以创建具有14字节精度的类(使用2个long long变量),该类支持算术运算,并在内部管理两个变量之间的算术进位。

唯一的选择是找到一个支持长精度或无限精度的库。