- ベストアンサー
数の大きさ
C++初心者です。以下の様なプログラムで、合計を求めたいのですが、あまり桁数の大きい数だと、正確な値がでません。(20桁とか・・・)これは一体どういうことが考えられますか?//配列の全要素の合計を求める #include<iostream.h> int main(void) { int i; int a[5]={0}.; cout<<"5個の整数値を入力しましょう。 \n"; for(i=0; i<5; i++) { cout<<"No."<<i+1<<": "; cin>>a[i]; } int sum=0; for(i=0; i<5; i++) sum=sum+a[i]; cout<<"合計は"<<sum<<"です。\n"; return(0); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
合計を求める為に使っている変数 sum の型 int は、表現できる数値の 範囲が決っています。 使っている環境のマニュアルか、もしくは include/limits.h に 記述があるはずですが、int が4バイトであれば、最大の数値は 2147483647 です。 もし、20桁の数値を正確に計算したい、ということであれば、 「多倍長演算」という技術を使います。 C++ でも良いのであれば、それをサポートしたクラスが、探せば いくつでも見つかるでしょう。そのうちのひとつを参考URLに 紹介しておきます。
その他の回答 (1)
- mnabe
- ベストアンサー率33% (427/1283)
回答No.1
intの有効桁数を調べましょう。
質問者
お礼
調べてみます。ありがとうございました。
お礼
なんとなく仕組みがわかってきました。ありがとうございます。 返事おそくなってすみません。