1. ホーム
  2. ruby

[解決済み] ルビーオールウェイズ ラウンドアップ

2022-02-03 19:45:20

質問

頭がおかしくなりそうです。全ての分数を四捨五入して一番近い整数にしたい。

例えば、67/30=2.2333333334。結果が整数でない場合、私は決して切り捨てず、上へ切り上げたいのです。

試しているのはこれです。

puts 67/30.to_f.ceil

以下はその例です。

  • 67/30 = 3
  • 50/100 = 1
  • 2/2 = 1

何かアイデアはありますか?ありがとうございます。

解決方法は?

問題は、現在、あなたが ceil30.to_f . これをRubyがどう評価するかというと、次のようになります。

(67)/(30.to_f.ceil)
# .ceil turns the float into an integer again
(67)/(30.0.ceil)
# and now it's just an integer division, which will be 2
67/30 # = 2

これを解決するには、括弧を付ければいいのです。

puts (67/30.to_f).ceil  # = 3