書籍「Ruby レシピブック第二版268の技」のP.289のスクリプトを動かしたんですが、
結果がちょっとおかしいです。

class Numeric
def round_n(nth)
num = self*(10**(-nth))
return num.round()*(10**nth)
end
end

num = 438.1728
p num.round_n(-3) #=> 438.173

結果は↓
Rational(438173, 1000)

何がいけないんでしょうか?よろしくお願いします。