Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个输出有小数?而且,这远远不是正确的答案 我试图计算C++中2 ^ 1000的数字和。_C++ - Fatal编程技术网

为什么这个输出有小数?而且,这远远不是正确的答案 我试图计算C++中2 ^ 1000的数字和。

为什么这个输出有小数?而且,这远远不是正确的答案 我试图计算C++中2 ^ 1000的数字和。,c++,C++,正如您所看到的,2^1000的值包含许多零和一些数字,但即使如此,sum的输出结果仍然是小数 我的代码如下: #include <bits/stdc++.h> using namespace std; main() { cout<<fixed; long double a=pow(2,1000),sum=0; cout<<"2^1000 is"<<a<<"\n"; while(a) { sum+=fmod

正如您所看到的,2^1000的值包含许多零和一些数字,但即使如此,sum的输出结果仍然是小数

我的代码如下:

#include <bits/stdc++.h>

using namespace std;

main() {
  cout<<fixed;

  long double a=pow(2,1000),sum=0;

  cout<<"2^1000 is"<<a<<"\n";
  while(a) {
    sum+=fmod(a,10);
    a/=10;
  }

cout<<sum;
}
#包括
使用名称空间std;
main(){

CUT< P>不能在C++中的单个变量中存储<代码> 2 ^ 1000/代码>。<代码> 2 ^ 1000 > /COD>需要至少1000位存储在二进制中,没有原始类型的变量足够长。因此第一个打印结果已经出错,记住没有2的幂包含结束0。(
2*2=4
4*2=8
8*2=16
6*2=2
)。这样您就不能依赖
fmod
的结果


2^1000=107150860718626732094842504906000181051404811705533360744375038837035105112493612249319837881569558127594672917553146825871452856923104043598457746985748574848393456777482423054210746056711418754182153647498358194126739876767559165594607706914571964776865421766042526262867205680376
为什么不使用integrap>er类型,如
long int
?小错误累积超过1000次迭代。long int实际上无法存储302位数字,它所能做的只是19。没错,你必须创建自己的类型,可以处理高达10^300的整数。实际上,在练习时,我制作了一个数据类型来存储大约30位数字,并且可以轻松地扩展它,但不需要下载所有的操作符是一个乏味的工作。好吧……然后,还有其他的建议(比如一些算法),C++中除了做我自己的数据类型之外,还有很多方法来计算巨大的能量。但是对于这个,它并不难,提示在我的答案中。