Haskell:
Redondeo de números

Cómo:

Haskell utiliza las funciones round, ceiling, floor y truncate de Prelude para operaciones de redondeo.

import Prelude

main :: IO ()
main = do
  let num = 3.567
  print $ round num    -- 4
  print $ ceiling num  -- 4
  print $ floor num    -- 3
  print $ truncate num -- 3
  
  -- Redondear a un lugar decimal específico no está en Prelude.
  -- Aquí hay una función personalizada:
  let roundTo n f = (fromInteger $ round $ f * (10^n)) / (10.0^^n)
  print $ roundTo 1 num -- 3.6

Estudio Profundo

Históricamente, el redondeo es significativo en análisis numérico y ciencias de la computación porque es crucial para minimizar la acumulación de errores en cálculos, particularmente antes de que las representaciones de punto flotante fueran estandarizadas con IEEE 754.

¿A qué redondear? round te lleva al entero más cercano, hacia arriba o hacia abajo. ceiling y floor siempre redondean hacia arriba o hacia abajo al entero más cercano, respectivamente, mientras que truncate simplemente elimina los puntos decimales.

Alternativas a estas funciones podrían involucrar lógica personalizada, como nuestro roundTo, o podrías utilizar librerías (como Data.Fixed) para requisitos más complejos.

Ten cuidado con los resultados inesperados debido a cómo Haskell maneja los casos intermedios en round (redondea al número par más cercano).

Ver También