diff options
author | inoas <mail@inoas.com> | 2022-10-11 12:46:31 +0200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-11-15 13:26:45 +0000 |
commit | 115afa61406cdc77e68133bc5a02f937911b4349 (patch) | |
tree | 447ff6311e5f8cd173d49e1cab32d5c95fc2d700 | |
parent | ba9daf20bc986e405a98eabb389f14ee713060fc (diff) | |
download | gleam_stdlib-115afa61406cdc77e68133bc5a02f937911b4349.tar.gz gleam_stdlib-115afa61406cdc77e68133bc5a02f937911b4349.zip |
improve int.floor_divide
-rw-r--r-- | src/gleam/int.gleam | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gleam/int.gleam b/src/gleam/int.gleam index ca0881e..d806fe1 100644 --- a/src/gleam/int.gleam +++ b/src/gleam/int.gleam @@ -721,11 +721,13 @@ pub fn modulo(dividend: Int, by divisor: Int) -> Result(Int, Nil) { pub fn floor_divide(dividend: Int, by divisor: Int) -> Result(Int, Nil) { case divisor { 0 -> Error(Nil) - divisor -> - case dividend * divisor < 0 && dividend % divisor != 0 { - True -> Ok(dividend / divisor - 1) - False -> Ok(dividend / divisor) + divisor -> { + let quotient = dividend / divisor + case quotient < 0 && dividend % divisor != 0 { + True -> Ok(quotient - 1) + False -> Ok(quotient) } + } } } |