Translate

lunes, 4 de marzo de 2024

El tipo Float de Gleam

 


import gleam/io

import gleam/float


pub fn main() {

  // Float arithmetic

  io.debug(1.0 +. 1.5)

  io.debug(5.0 -. 1.5)

  io.debug(5.0 /. 2.5)

  io.debug(3.0 *. 3.5)


  // Float comparisons

  io.debug(2.2 >. 1.3)

  io.debug(2.2 <. 1.3)

  io.debug(2.2 >=. 1.3)

  io.debug(2.2 <=. 1.3)


  // Equality works for any type

  io.debug(1.1 == 1.1)

  io.debug(2.1 == 1.2)


  // Division by zero is not an error

  io.debug(3.14 /. 0.0)


  // Standard library float functions

  io.debug(float.max(2.0, 9.5))

  io.debug(float.ceiling(5.4))

}


El tipo Float de Gleam representa números que no son enteros.

Los operadores numéricos de Gleam no están sobrecargados, por lo que existen operadores dedicados para trabajar con flotantes.

Los flotantes se representan como números de punto flotante de 64 bits tanto en Erlang como de JavaScript. El comportamiento del punto flotante es nativo de sus respectivos runtimes, por lo que su comportamiento exacto será ligeramente diferente en los dos runtimes.

En JavaScript, exceder el valor máximo (o mínimo) representable para un valor de punto flotante dará como resultado Infinity (o -Infinity). Si intentas dividir dos infinitos, obtendrás NaN como resultado.

Cuando se ejecuta en BEAM, cualquier desbordamiento generará un error. Por lo tanto, no hay ningún valor flotante NaN o Infinity en el tiempo de ejecución de Erlang.

La división por cero no se desbordará, sino que se define como cero.

El módulo de biblioteca estándar gleam/float contiene funciones para trabajar con flotantes.