- ベストアンサー
長い桁(小数点以下)が計算できる言語は?
先日、円周率を求める独自のアルゴリズムで、(仮称)十進BASICを使用して1000桁まで出すことに成功しました。 しかし、(仮称)十進BASICは1000桁が限界で、これ以上詳しい値を出すことが出来ませんでした。 なので、さらに詳しい値を算出できるプログラミング言語には何があるのでしょうか? 検索してみると、独自の計算のプログラムなどを組まなければいけないとか・・・ 無限桁の桁数が扱えるプログラミング言語はないでしょうか? また、計算用のプログラムを組むとなれば、どの言語がおすすめですか? 是非教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
無限桁はあり得ないので、「メモリの許す限りで最大桁数を指定出来る」という言語は色々あります。 例えばRubyで10000桁の計算をするとすると、こんな感じ。 require "bigdecimal" #任意長の実数計算ライブラリを指定 a = BigDecimal("1",10000) # a に有効数値桁10000桁の1を代入 b = BigDecimal("3") # b に 3 を代入 puts a/b # 0.333......3 (10000桁) を表示 プログラミングは出来ませんが、Linux等に普通入っている bc コマンドで小数点以下任意桁まで計算出来ます。 $ bc scale=10000 #小数点以下10000桁まで扱う 1/3 # 0.333......3 (10000桁) を表示
その他の回答 (3)
場合によっては,有理数が扱えるとうれしいかもしれませんね~ 1/3 が正確に表せる。 http://ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F%E7%B2%BE%E5%BA%A6%E6%BC%94%E7%AE%97
- kmee
- ベストアンサー率55% (1857/3366)
まず、無限の桁を使うためには、無限のメモリが必要ですので、現在のところ「不可能」です。 既に回答のあるように、そういうものは、言語の仕様よりは、どんな手段でやるか、の方が重要です。 たとえば、1変数では1000桁でも、次の1000桁を別の変数に入れて、筆算のように繰上げ,繰下げを行えば、2000桁になります。 標準の実数型は通常十数ケタしか精度の無いC言語ですが、多倍長演算と呼ばれる類いのライブラリを使えば、もっと多くの桁を利用できます。 例: http://ja.wikipedia.org/wiki/GNU_Multi-Precision_Library
お礼
ありがとうございます!
- SaKaKashi
- ベストアンサー率24% (755/3136)
言語の問題ではなく、計算手法による。
お礼
具体的な説明をありがとうございます。 一度Rubyでやってみようと思います。