• ベストアンサー

数の大きさ

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); }

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

合計を求める為に使っている変数 sum の型 int は、表現できる数値の 範囲が決っています。 使っている環境のマニュアルか、もしくは include/limits.h に 記述があるはずですが、int が4バイトであれば、最大の数値は 2147483647 です。 もし、20桁の数値を正確に計算したい、ということであれば、 「多倍長演算」という技術を使います。 C++ でも良いのであれば、それをサポートしたクラスが、探せば いくつでも見つかるでしょう。そのうちのひとつを参考URLに 紹介しておきます。

参考URL:
http://hp.vector.co.jp/authors/VA007799/bignum.htm
yabupiano
質問者

お礼

なんとなく仕組みがわかってきました。ありがとうございます。 返事おそくなってすみません。

その他の回答 (1)

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

intの有効桁数を調べましょう。

yabupiano
質問者

お礼

調べてみます。ありがとうございました。