我是Ruby的新手,正在尝试弄清楚ceil
和floor
的工作原理,因为当使用分数或小数时(类似的值)会得到不同的答案。以下是我尝试过的:
puts 8/3.ceil == 2 #=> true
puts 8/3.floor == 2 #=> true
puts 2.67.ceil == 2 #=> false
puts 2.67.floor == 2 #=> true
根据我的理解,ceil
应该返回一个更高的数字,而floor
则是一个更低的数字。希望有人能为我解惑。谢谢!:)
8/3.floor
实际上是8/(3.floor)
,因为.
的优先级高于/
。 - tadmanfdiv
方法可以执行浮点数除法,例如8.fdiv(3).ceil
。Ruby 还提供了一个很好的Rational
类:(8/3r).ceil
。 - Stefan