2012-03-15 8 views
5

yo diría que todos los lenguajes de programación tienen funciones con estos nombres para elegir el menor o mayor de dos valores:¿Cuál es la diferencia entre el par de funciones floor()/ceil() y min()/max()?

  • min() & max()
  • floor() & ceil()/ceiling()

y algunas lenguas tienen ambos. JavaScript, creo, es un ejemplo.

Siempre he sido un poco confusa sobre la diferencia entre el par anterior y el último par. Tengo una vaga impresión de que min/max son más simplistas y floor/ceiling son más matemáticos, pero eso no es mucho para seguir.

Curiosamente, no puedo encontrar esto discutido en cualquier lugar de StackOverflow o Internet generalmente buscando en Google. ¿Existen algunas mejores prácticas o reglas generales para decidir cuál de estas funciones usar cuando su lenguaje de programación ofrece ambas?

Respuesta

8

Esto es manzanas contra naranjas. En la mayoría de los idiomas/API, min/max toma dos (o más) entradas, y devuelve la más pequeña/más grande. floor/ceil tome un argumento, y redondee hacia arriba o hacia abajo al entero más cercano.

+5

Oof! Parece obvio! ¡Pero no lo eliminaré aún en caso de que haya otros tontos como yo que pensaran lo mismo! '\ -:' – hippietrail

10

Que yo sepa max y min se utilizan en una colección, por ejemplo, una serie de números. Floor y ceiling se usan para números únicos. Por ejemplo:

min(1, 2, 3, 4) => 1 
max(1, 2, 3, 4) => 4 
floor(3.5) => 3 
ceiling(3.5) => 4 
3

min() y max() devolver el menor o mayor de 2 valores, algunos podrían hacer más de 2 valores, como en

min(3, 5); retornos 3.

floor() y ceiling() truncar un doble en un entero como en

floor(5.3); rendimientos 5.

3

No estoy seguro de entender su pregunta, véase por ejemplo:

a = 1.7 
b = 2.8 

min(a,b) = 1.7 (returns the minimum of a and b) 
max(a,b) = 2.8 (returns the maximum of a and b) 

floor(a) = 1 (rounds towards 0) 
floor(b) = 2 (rounds towards 0) 

ceil(a) = 2 (rounds up) 
ceil(b) = 3 (rounds up) 
4
min(1, 2) == 1 
max(1, 2) == 2 

floor(3.9) == 3 
round(3.9) == 4 

ceil(3.1) == 4 
round(3.1) == 3 

trunc, as in (int)(3.xxx) = 3 (no matter what xxx is) 

Por definición:

floor es el mayor entero menor n.

ceil es el entero más pequeño mayor que n.

Cuestiones relacionadas