Rubyで五捨五超入を計算する

こんにちは!kossyです!





さて、今回はRubyで五捨五超入する方法について、備忘録としてブログに残してみたいと思います。




環境

Ruby 2.6.9




五捨五超入とは

主に薬価の計算を行う時に用いる端数処理で、薬価の円を点数に直して計算するときに使われます。

www.foresight.jp


Rubyで五捨五超入をやってみる

ロジックとしては、「小数点以下が0.5を超えていれば切り上げ」なので、

def rounding_up_five
  # レシーバの数字からレシーバをint型にして引き算
  decimal = self - to_i

  # 小数点以下の数値が0.5よりも大きいかどうか
  if decimal > 0.5
    to_i + 1
  else
    to_i
  end
end

のようになると思います。

早速実行してみましょう。説明のためにFloatクラスを拡張する形でメソッドを定義します。

$ irb

$ class Float
  def rounding_up_five
    # レシーバの数字からレシーバをint型にして引き算
    decimal = self - to_i

    # 小数点以下の数値が0.5よりも大きいかどうか
    if decimal > 0.5
      to_i + 1
    else
      to_i
    end
  end
end

$ 1.49.rounding_up_five
=> 1
$ 1.50.rounding_up_five
=> 1
$ 1.51.rounding_up_five
=> 2

小数点以下が0.5よりも大きい場合に、一の位に1を足した数値が返ることが確認できました。




勉強になりました。