aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2019-04-22 22:55:03 +0000
committerLouis Pilfold <louis@lpil.uk>2019-04-22 22:55:03 +0000
commitd2b072e4deaf9bfa4a458ec324f83cae08890043 (patch)
tree584fa892c88b57354004792dcb270818113cf07b
parent8797d27e0801d37a6082ce54dac9f9d5cb01ec6c (diff)
downloadgleam_stdlib-d2b072e4deaf9bfa4a458ec324f83cae08890043.tar.gz
gleam_stdlib-d2b072e4deaf9bfa4a458ec324f83cae08890043.zip
float:truncate
-rw-r--r--CHANGELOG.md4
-rw-r--r--gen/src/float.erl5
-rw-r--r--gen/test/float_test.erl10
-rw-r--r--src/float.gleam2
-rw-r--r--test/float_test.gleam26
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)
+}