为什么这个输出有小数?而且,这远远不是正确的答案 我试图计算C++中2 ^ 1000的数字和。
正如您所看到的,2^1000的值包含许多零和一些数字,但即使如此,sum的输出结果仍然是小数 我的代码如下:为什么这个输出有小数?而且,这远远不是正确的答案 我试图计算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
#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++中除了做我自己的数据类型之外,还有很多方法来计算巨大的能量。但是对于这个,它并不难,提示在我的答案中。