Hatena::Grouprubyist

Ruby初心者prinyの学習帳 RSSフィード

2009-01-14練習:たのしいRuby P.172 - 173

練習問題 (1)

16:25

華氏を摂氏に変換するメソッド fahr2celsius を定義しましょう。
摂氏と華氏の変換の公式:摂氏 = 5 × (華氏 - 32) ÷ 9

書いたもの

def fahr2celsius(fahr)
  5 * (fahr - 32).quo(9)
end

p fahr2celsius(-40)
p fahr2celsius(-17.8)
p fahr2celsius(0)
p fahr2celsius(98.6)

実行結果

 -40.0
 -27.6666666666667
 -17.7777777777778
 0.0
 37.0

最初は、こんなふうに書いた。

def fahr2celsius(fahr)
  5 * (fahr - 32) / 9 
end

fahr2celsius(0) が -18 になった。この結果は正しくない。そこで、Rubyリファレンスマニュアル - trap::Numeric を参考に、Numeric#quo を使うことにした。

Rubyリファレンスマニュアル - Numeric#truncate にあるように任意桁の四捨五入を行うメソッドを定義し、小数点以下第 2 位を四捨五入して、小数点第 1 位まで表示するようにしようかとも思ったけど、変換した値を使った計算をしたら、誤差が出てしまうかもしれないから、丸めるのはやめた。