diff options
author | Louis Pilfold <louis@lpil.uk> | 2019-04-22 22:55:03 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2019-04-22 22:55:03 +0000 |
commit | d2b072e4deaf9bfa4a458ec324f83cae08890043 (patch) | |
tree | 584fa892c88b57354004792dcb270818113cf07b | |
parent | 8797d27e0801d37a6082ce54dac9f9d5cb01ec6c (diff) | |
download | gleam_stdlib-d2b072e4deaf9bfa4a458ec324f83cae08890043.tar.gz gleam_stdlib-d2b072e4deaf9bfa4a458ec324f83cae08890043.zip |
float:truncate
-rw-r--r-- | CHANGELOG.md | 4 | ||||
-rw-r--r-- | gen/src/float.erl | 5 | ||||
-rw-r--r-- | gen/test/float_test.erl | 10 | ||||
-rw-r--r-- | src/float.gleam | 2 | ||||
-rw-r--r-- | test/float_test.gleam | 26 |
5 files changed, 43 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 417e7e1..b43e9b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,8 @@ - `str` module gains `append` function and loses `from_int`, `parse_int`, `from_float`, `parse_float`, and `base_from_int`. - `int` module created with `parse`, `to_string`, and `to_base_string`. -- `float` module created with `ceiling`, `floor`, `round`, `parse`, and - `to_string`. +- `float` module created with `ceiling`, `floor`, `round`, `truncate`, + `parse`, and `to_string`. ## v0.1.1 - 2019-04-17 diff --git a/gen/src/float.erl b/gen/src/float.erl index f9e4064..cd1385c 100644 --- a/gen/src/float.erl +++ b/gen/src/float.erl @@ -1,7 +1,7 @@ -module(float). -compile(no_auto_import). --export([parse/1, to_string/1, ceiling/1, floor/1, round/1]). +-export([parse/1, to_string/1, ceiling/1, floor/1, round/1, truncate/1]). parse(A) -> gleam__stdlib:parse_float(A). @@ -17,3 +17,6 @@ floor(A) -> round(A) -> erlang:round(A). + +truncate(A) -> + erlang:trunc(A). diff --git a/gen/test/float_test.erl b/gen/test/float_test.erl index ecd210b..36eb3ad 100644 --- a/gen/test/float_test.erl +++ b/gen/test/float_test.erl @@ -1,7 +1,7 @@ -module(float_test). -compile(no_auto_import). --export([parse_test/0, to_string_test/0, ceiling_test/0, floor_test/0, round_test/0]). +-export([parse_test/0, to_string_test/0, ceiling_test/0, floor_test/0, round_test/0, truncate_test/0]). parse_test() -> expect:equal(float:parse(<<"1.23">>), {ok, 1.23}), @@ -32,3 +32,11 @@ round_test() -> expect:equal(float:round(8.5), 9), expect:equal(float:round(-8.1), -8), expect:equal(float:round(-7.5), -8). + +truncate_test() -> + expect:equal(float:truncate(8.1), 8), + expect:equal(float:truncate(8.4), 8), + expect:equal(float:truncate(8.499), 8), + expect:equal(float:truncate(8.5), 8), + expect:equal(float:truncate(-8.1), -8), + expect:equal(float:truncate(-7.5), -7). diff --git a/src/float.gleam b/src/float.gleam index 8902a82..5840606 100644 --- a/src/float.gleam +++ b/src/float.gleam @@ -17,3 +17,5 @@ pub external fn ceiling(Float) -> Float = "math" "ceil"; pub external fn floor(Float) -> Float = "math" "floor"; pub external fn round(Float) -> Int = "erlang" "round"; + +pub external fn truncate(Float) -> Int = "erlang" "trunc"; diff --git a/test/float_test.gleam b/test/float_test.gleam index a3bf4c1..db879b8 100644 --- a/test/float_test.gleam +++ b/test/float_test.gleam @@ -90,3 +90,29 @@ pub fn round_test() { |> float:round |> expect:equal(_, -8) } + +pub fn truncate_test() { + 8.1 + |> float:truncate + |> expect:equal(_, 8) + + 8.4 + |> float:truncate + |> expect:equal(_, 8) + + 8.499 + |> float:truncate + |> expect:equal(_, 8) + + 8.5 + |> float:truncate + |> expect:equal(_, 8) + + -8.1 + |> float:truncate + |> expect:equal(_, -8) + + -7.5 + |> float:truncate + |> expect:equal(_, -7) +} |