人生のプチ美学を教えてください!!

C言語で10進数50桁程度を扱える変数を探しております.

なにか御存じの方は返信よろしくお願いします.

A 回答 (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
という計算ができます。
実際には桁数にもっと余裕をもって宣言してください。
    • good
    • 0

詳細は確認していませんが以下のライブラリが適していると思われます。


bign.lib , a C big number library

http://sourceforge.jp/projects/sfnet_bignlibacbi …
http://jaist.dl.sourceforge.net/project/bignliba …
    • good
    • 0

google codesearch でサーチしてみて下さい。


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

仕様上、double型なら 300桁程度まで対応できます。



※google先生のキーワード「"C言語"  double 範囲」

ただし、指数表記なので望んだ形式では計算・出力できないかもですね。
因みに私なら文字列を使用して対応します。
足し算、引き算等、基本的な演算でも自分で関数を作成する必要が
ありますが、それ程難易度の高いものではないですから。
    • good
    • 0

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

    • good
    • 0

C言語で、そのような変数はありません。


どうしても、C言語でないとだめなのでしょうか。
    • good
    • 0

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


あとは GMP とか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!