Arredondamento de números

Haskell:
Arredondamento de números

Como fazer:

Haskell usa as funções round, ceiling, floor e truncate do Prelude para operações de arredondamento.

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
  
  -- Arredondar para uma casa decimal específica não está no Prelude.
  -- Aqui está uma função personalizada:
  let roundTo n f = (fromInteger $ round $ f * (10^n)) / (10.0^^n)
  print $ roundTo 1 num -- 3.6

Aprofundamento

Historicamente, arredondar é significativo na análise numérica e ciência da computação porque é crucial para minimizar a acumulação de erro em computações, particularmente antes das representações de ponto flutuante serem padronizadas com IEEE 754.

Para que arredondar? round te leva ao inteiro mais próximo—para cima ou para baixo. ceiling e floor sempre arredondam para cima ou para baixo até o inteiro mais próximo, respectivamente, enquanto truncate simplesmente descarta os pontos decimais.

Alternativas a estas funções podem envolver lógica personalizada, como nosso roundTo, ou você pode incorporar bibliotecas (como Data.Fixed) para requisitos mais complexos.

Cuidado com resultados inesperados devido à forma como Haskell lida com casos de meio termo em round (ele arredonda para o número par mais próximo).

Veja Também