データ型を超える数値の計算

[戻る]
iso 2002/04/12(金) 14:18:18
はじめまして、isoです。

<質問>
かなり大きな数を計算しようとしているのですが、
データ型"__int64"を使用しても、
9,223,372,036,854,775,807
までしか表現できません。
これ以上の数値を表現する方法はあるのでしょうか?

どんな方法でも構いませんので、
どうぞ宜しくお願い致します。

いもちぃ 2002/04/12(金) 15:03:03
そういう場合は、構造体等を使って自分でオペレーターを作ります。
プログラミングの基礎を真剣に書いてくれてる本を探せば、
詳しいやりかたも書いてあります。

これをヒントに、まずはどのへんがわからないか絞りましょう。
・オペレーターを作るってわかりますか?
・構造体はわかりますか?

また、開発環境によって使える方法と使えない方法があります。
特にCかC++か。
とにかく、使用上の注意は必ず読みましょうよ。

ワルツ 2002/04/16(火) 09:30:00
本の正式な名前は忘れましたが、「C言語によるアルゴリズム辞典」だったかな?
たしか、それに多桁計算のサンプルがありったとおもいます。

構造体か配列に、4桁ずつ(別に何桁でもいいでしょうけど)わけて
もつというようなことをやっていました。
(もしかしたら、char配列だったかな?)
ということで、自前で作成するしかないでしょう。

正確に覚えていないので、この程度しかいえませんが・・・

PATIO 2002/04/16(火) 13:37:40
int64でもおさまらない計算っていったいどんな計算なんでしょう。
天文学の計算でもするのかなぁ。
皆さんが言われているように自前でやるしかないでしょう。
しかし、面倒なんだよなぁ。
和と差はともかく積と商が。

ただ、そんな桁数になるのであれば、全桁の精度が必要なんでしょうか?
下桁の方は切り捨てて、上の桁だけで計算して、表示上はゼロを下に
決まっただけつけるとかいうのもありなきもしますけれど。

kazuma 2002/04/17(水) 02:11:55
精度を犠牲にしてもよいのならdouble型を使えばかなり大きな数まで扱えます。

きっちりやらないといけないのなら、
キーワード「多倍長演算」で検索すると解説やらソースやらがいろいろ見つかります。

kazuma 2002/04/17(水) 02:29:53
ついでに、「C言語による最新アルゴリズム事典」のソースは
著者の奥村先生のページからダウンロードできます。
http://www.matsusaka-u.ac.jp/~okumura/algo/

古いスレッドには追加発言できません。