Ruby .ceil 和 .floor
Ruby .ceil and .floor
我是 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
应该 return 更高,floor
应该更低。希望有人能启发我。谢谢! :)
一切都正确返回。
puts 8/3.ceil == 2
#=> true, because 8/3 returns an Integer, 2
puts 8/3.floor == 2
#=> true, because 8/3 returns an Integer, 2
puts 2.67.ceil == 2
#=> false, because 2.67.ceil is 3
puts 2.67.floor == 2
#=> true, because 2.67.floor is 2
为了使这里的事情更有意义,您可以将结果转换为 Float:
(8.to_f / 3).ceil == 2 #=> false
(8.to_f / 3).floor == 2 #=> true
2.67.ceil == 2 #=> false
2.67.floor == 2 #=> true
另一件事要记住,写8/3.ceil
实际上是8 / (3.ceil)
,因为.
比/
结合得更牢固。 (谢谢 @tadman)
还有一件事要提到,是 (thx @Stefan):
There's also fdiv
to perform floating point division, i.e.
8.fdiv(3).ceil
. And Ruby also comes with a nice Rational
class: (8/3r).ceil
.
我是 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
应该 return 更高,floor
应该更低。希望有人能启发我。谢谢! :)
一切都正确返回。
puts 8/3.ceil == 2
#=> true, because 8/3 returns an Integer, 2
puts 8/3.floor == 2
#=> true, because 8/3 returns an Integer, 2
puts 2.67.ceil == 2
#=> false, because 2.67.ceil is 3
puts 2.67.floor == 2
#=> true, because 2.67.floor is 2
为了使这里的事情更有意义,您可以将结果转换为 Float:
(8.to_f / 3).ceil == 2 #=> false
(8.to_f / 3).floor == 2 #=> true
2.67.ceil == 2 #=> false
2.67.floor == 2 #=> true
另一件事要记住,写8/3.ceil
实际上是8 / (3.ceil)
,因为.
比/
结合得更牢固。 (谢谢 @tadman)
还有一件事要提到,是 (thx @Stefan):
There's also
fdiv
to perform floating point division, i.e.8.fdiv(3).ceil
. And Ruby also comes with a niceRational
class:(8/3r).ceil
.