From 04ec0d86c8b43d1cca48adc937b3e596a10577a1 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Tue, 26 Mar 2024 11:36:11 +0000 Subject: Improve introduction of modules and imports Thanks @RyanBrewer317! --- .../chapter0_basics/lesson06_floats/code.gleam | 27 ++++++++++++++++++ .../chapter0_basics/lesson06_floats/en.html | 32 ++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/content/chapter0_basics/lesson06_floats/code.gleam create mode 100644 src/content/chapter0_basics/lesson06_floats/en.html (limited to 'src/content/chapter0_basics/lesson06_floats') diff --git a/src/content/chapter0_basics/lesson06_floats/code.gleam b/src/content/chapter0_basics/lesson06_floats/code.gleam new file mode 100644 index 0000000..4241ab4 --- /dev/null +++ b/src/content/chapter0_basics/lesson06_floats/code.gleam @@ -0,0 +1,27 @@ +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)) +} diff --git a/src/content/chapter0_basics/lesson06_floats/en.html b/src/content/chapter0_basics/lesson06_floats/en.html new file mode 100644 index 0000000..7175628 --- /dev/null +++ b/src/content/chapter0_basics/lesson06_floats/en.html @@ -0,0 +1,32 @@ +

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. +

-- cgit v1.2.3