25.f. 数値計算

目次へ 前の項目へ次の項目へ

Rubyのようなスクリプト言語は文字列の処理に威力を発揮することが多いようです。 また、作者のまつもとさんもいつも謙遜されて、作者が数学が得意でないので Rubyも数値計算はちょっと、というような話をされていますが、Rubyも立派に計算 に使えます。ここでは、文字列処理は日本語の問題など少しややこしい準備など ありますので、もう少し数学的な計算を続けてみましょう。

次の例題は円周率の計算です。記憶力を試すために暗唱したり、計算機の能力を示 すために何桁までできるか、など、ときどき話題になる円周率ですが、とりあえず、 計算してみましょう。

以下のようなスクリプトを作成します。

include Math
puts PI
printf "Pi = %1.100f \n", 4 * atan2(1,1)

数学的な関数などを使用して計算するときには、それ用の便利な道具があるので使 うよ、という宣言をします。それが、最初のおまじないの

include Math

です。そうすると、実は円周率の値は PI という定数が用意してあるの で、puts PI とすると表示できるのですが、それだけでは面白くないの で、より詳細な計算をしてみたのが次のものです。ここでは、printf が 出てきました。printf は二重引用符で囲んだ文字列を出力するのですが、 途中に、%1.100f というよくわからないものがあります。このように % で始まる書式は、文字列 (%s) や整数 (%d)、浮動小数 (%f)、指数表記の数 (%e) など、表 現をきちんとしたい場合に用いるもので、ここでは、%f ですので、浮 動小数で表現しなさい、となっています。途中にある1.100 は整数部分 は最低でも一桁、小数は第100位まで書きなさい、という意味です。atan2 という 関数は、逆正接の三角関数ですが、今は詳細は置いておきましょう。

pi.rbという名前で保存したら、実行してみましょう。あらかじめ用意されている 定数の方の円周率は10桁です。自分で計算した方は、途中から0がずらっと並ん でしまっています。この方法では、小数第48位までしか計算できないようです。

最後に覚えておかないと間違えやすい点を一つ。プログラミング言語では整数の計 算の答えは整数、浮動小数の計算の答えは浮動小数というように決まっているもの がたくさんあり、Rubyもそうなっています。次の計算をしてみるとよくわかります が、実際の処理には注意が必要です。

puts 4/2
puts 1/2
puts 1.0/2


ページの先頭へ目次へ 前の項目へ次の項目へ