ruby - Rubí.ceil y.floor
math (1)
Todo se devuelve correctamente.
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
Para hacer las cosas de más sentido aquí, puedes convertir los resultados a 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
Otra cosa a tener en cuenta, que haber escrito 8/3.ceil
es en realidad 8 / (3.ceil)
, porque el .
se une más fuerte que /
. ( Thx @tadman )
Otra cosa que mencionar, es que (thx @Stefan ):
También hay
fdiv
para realizar la división de punto flotante, es decir,8.fdiv(3).ceil
. Y Ruby también viene con una buena claseRational
:(8/3r).ceil
.
Soy nuevo en Ruby y estoy tratando de averiguar cómo funciona ceil
y floor
cuando obtengo respuestas diferentes cuando se usa una fracción o un número decimal (valor similar). A continuación es lo que he intentado:
puts 8/3.ceil == 2 #=> true
puts 8/3.floor == 2 #=> true
puts 2.67.ceil == 2 #=> false
puts 2.67.floor == 2 #=> true
A mi entender, ceil
debería devolver un número más alto y el floor
es un número más bajo. Espero que alguien me pueda iluminar sobre esto. ¡Gracias! :)