ruby math floor ceil

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 clase Rational : (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! :)