gpt4 book ai didi

c++ - C++ 中的大整数

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:53 29 4
gpt4 key购买 nike

假设我想将 2^100 存储在一个变量中。没有整数类型允许这样做。但这可以存储在小数点后带零的 double 变量中,即可以使用以下代码。

double no = 1;
int i = 1;
for(i=1;i<=100;i++) no*=2;

我现在想打印没有小数点后的'no'。这个可以吗。我只对打印感兴趣,而不是它的存储。

注意:我知道这个问题可以用整数数组来解决,所以请不要推荐那个方法。

最佳答案

你在谈论任意精度整数,我建议使用诸如 GMP 之类的库。参见 https://gmplib.org .

使用 float 不会解决您的问题,因为它会将您的整数四舍五入为最接近的 float ,您将失去精度。

“在典型的计算机系统上,‘ double ’(64 位)二进制 float 具有 53 位的系数(隐含其中一位)、11 位的指数和一个符号位。 “(维基百科)

只要我们只处理 2 的幂,那么浮点表示就是精确的:一个有效数字 (1) 和一个等于 100 的指数。所以你可以不用 double 。一旦你添加了一个与存储的数字相比足够小的数字,你就会得到原始数字。经典的浮点问题。

关于c++ - C++ 中的大整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28919059/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com