diff options
author | Louis Pilfold <louis@lpil.uk> | 2024-03-26 11:36:11 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-03-26 11:36:11 +0000 |
commit | 04ec0d86c8b43d1cca48adc937b3e596a10577a1 (patch) | |
tree | 8624097a135e0e879588279eed82c4c2f82bfbab /src/content/chapter0_basics/lesson06_floats | |
parent | 9250d4324073874d393282c941f9981ce2686680 (diff) | |
download | tour-04ec0d86c8b43d1cca48adc937b3e596a10577a1.tar.gz tour-04ec0d86c8b43d1cca48adc937b3e596a10577a1.zip |
Improve introduction of modules and imports
Thanks @RyanBrewer317!
Diffstat (limited to 'src/content/chapter0_basics/lesson06_floats')
-rw-r--r-- | src/content/chapter0_basics/lesson06_floats/code.gleam | 27 | ||||
-rw-r--r-- | src/content/chapter0_basics/lesson06_floats/en.html | 32 |
2 files changed, 59 insertions, 0 deletions
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 @@ +<p>Gleam's <code>Float</code> type represents numbers that are not integers.</p> +<p> + Gleam's numerical operators are not overloaded, so there are dedicated + operators for working with floats. +</p> +<p> + 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. +</p> +<p> + Under the JavaScript runtime, exceeding the maximum (or minimum) representable + value for a floating point value will result in <code>Infinity</code> (or + <code>-Infinity</code>). Should you try to divide two infinities you will + get <code>NaN</code> as a result. +</p> +<p> + When running on the BEAM any overflow will raise an error. So there is + no <code>NaN</code> or <code>Infinity</code> float value in the Erlang + runtime. +</p> +<p> + Division by zero will not overflow, but is instead defined to be zero. +</p> +<p> + The + <a href="https://hexdocs.pm/gleam_stdlib/gleam/float.html" + ><code>gleam/float</code></a + > + standard library module contains functions for working with floats. +</p> |