Floats

Gleam's Float type represents numbers that are not integers.

Gleam's numerical operators are not overloaded, so there are dedicated operators for working with floats.

Floats are represented as 64 bit floating point numbers on both the Erlang and JavaScript runtimes. The floating point behaviour is native to their respective runtimes, so their exact behaviour will be slightly different on the two runtimes.

Under the JavaScript runtime, exceeding the maximum (or minimum) representable value for a floating point value will result in Infinity (or -Infinity). Should you try to divide two infinities you will get NaN as a result.

When running on the BEAM any overflow will raise an error. So there is no NaN or Infinity float value in the Erlang runtime.

Division by zero will not overflow, but is instead defined to be zero.

The gleam/float standard library module contains functions for working with floats.