mis*_*uan 22 ruby math floor 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
Run Code Online (Sandbox Code Playgroud)
根据我的理解,ceil
应该返回一个更高的数字,并且floor
数字更低.希望有人能就此启发我.谢谢!:)
And*_*eko 38
一切都正确返回.
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
Run Code Online (Sandbox Code Playgroud)
为了使事情变得更有意义,您可以将结果转换为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
Run Code Online (Sandbox Code Playgroud)
另外要记住的是,写作8/3.ceil
实际上是8 / (3.ceil)
因为.
结合力强于/
.(thx @tadman)
还有一件事要提到的是(thx @Stefan):
还有
fdiv
执行浮点除法,即8.fdiv(3).ceil
.而Ruby也有一个很好的Rational
课程:(8/3r).ceil
.