• 締切済み

変数

C言語で10進数50桁程度を扱える変数を探しております. なにか御存じの方は返信よろしくお願いします.

みんなの回答

  • peace_jt
  • ベストアンサー率0% (0/0)
回答No.7

int a[3]; a[0] = 1000; a[1] = 0000; a[2] = 0000; として、 printf("%04d%04d%04d", a[0], a[1], a[2]); とすれば、12桁表示できます。 この要領で50桁まで表示できるかと・・・ 計算は後の要素から順に計算していき、 4桁を超えたら5桁から上の数値をひとつ前の要素に繰上げすることで、計算が可能です たとえば、足し算で考えてみると、 1000 0000 1234 0000 9999 9999 ------------------- のような計算をするとき、 まず一番後ろの、 0001 と 9999の計算をします すると結果は11233となり5桁となりますので、 1 1233 と分けて、5桁から先の1を一つ前の要素に繰り上げてあげます。 要するに 1000 0001 1233 0000 9999 0000 ------------------- となります、この要領でやっていくと 1001 0000 1233 0000 0000 0000 ------------------- 1001 0000 1233 となり、 計算結果として 100100001233 という計算ができます。 実際には桁数にもっと余裕をもって宣言してください。

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.6

詳細は確認していませんが以下のライブラリが適していると思われます。 bign.lib , a C big number library http://sourceforge.jp/projects/sfnet_bignlibacbignum/ http://jaist.dl.sourceforge.net/project/bignlibacbignum/buserdoc.html#ari1

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.5

google codesearch でサーチしてみて下さい。 http://www.google.com/codesearch/advanced_code_search "multi precision decimal package"  言語=C 等と指定すれば 約17,300件ヒットしますので 内容を確認しテストされれば 適当なものが見つかると思われます。

回答No.4

仕様上、double型なら 300桁程度まで対応できます。 ※google先生のキーワード「"C言語"  double 範囲」 ただし、指数表記なので望んだ形式では計算・出力できないかもですね。 因みに私なら文字列を使用して対応します。 足し算、引き算等、基本的な演算でも自分で関数を作成する必要が ありますが、それ程難易度の高いものではないですから。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

大きい桁を扱う場合は多倍長演算という方法があります。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

C言語で、そのような変数はありません。 どうしても、C言語でないとだめなのでしょうか。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

処理系によってはそのような変数があるかもしれませんね. あとは GMP とか?

関連するQ&A