aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gleam/float.gleam12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/gleam/float.gleam b/src/gleam/float.gleam
index 34dba05..6aeeac7 100644
--- a/src/gleam/float.gleam
+++ b/src/gleam/float.gleam
@@ -261,8 +261,16 @@ pub fn truncate(x: Float) -> Int
/// ```
///
pub fn to_precision(x: Float, precision: Int) -> Float {
- let factor = do_power(10.0, do_to_float(-precision))
- do_to_float(round(x /. factor)) *. factor
+ case precision <= 0 {
+ True -> {
+ let factor = do_power(10.0, do_to_float(-precision))
+ do_to_float(round(x /. factor)) *. factor
+ }
+ False -> {
+ let factor = do_power(10.0, do_to_float(precision))
+ do_to_float(round(x *. factor)) /. factor
+ }
+ }
}
@external(erlang, "erlang", "float")