Ruby 逆引きレシピ レシピ023-031

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

今日はレシピ 023 から 031 までを読みました。

文字列の続きで日本語の分かち書きと、数値オブジェクトのところです。

レシピ 023 、MeCab による日本語の分かち書きはかっこいいですね。使い途が思いつかないのでしばらく使うことはなさそうです。

レシピ 027 より、BigDecimal 同士の演算で演算結果の精度を指定できるのは始めて知りました。ただしレシピ本に書いてあるサンプルと 1.9.2-preview1 での BigDecimal のデフォルトの精度には違いがあるようでした。

a = BigDecimal("1.0")
b = BigDecimal("3.0")
a.div(b, 24)  # => #<BigDecimal:101011128,'0.3333333333 3333333333 3333333333 3333333333 33E0',45(72)>

レシピ 028 より、Decimal(標準に組み込みじゃない数値ライブラリ decimal)と BigDecimal の性能差についてのコラムはわかりやすくて良かったです。10進数の誤差が重要なお金の計算をすることはあまりなさそうですが、そういう時には Decimal があることを憶えておきたいです。

レシピ 029 より、単位の変換をしてくれる RubyGems パッケージ measure はとっても便利です。さっそくインストールしました。もっと早くこれを知っていればと思います。ただレシピ本に書かれている Measure.short_form do .. end や Measure.enable_short_form メソッドはなくなってしまっているようでした(0.2.0)。1.9 で使っているからかもしれません。 嘘を書いてしまいました。require "measure/support" すれば使えました。ちゃんとレシピ本にもそう書かれてます。

レシピ 030, 031 の NArray のところはちょっと異質ですね。いきなり数学の話になりました。