aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinoas <mail@inoas.com>2022-10-11 12:46:31 +0200
committerLouis Pilfold <louis@lpil.uk>2022-11-15 13:26:45 +0000
commit115afa61406cdc77e68133bc5a02f937911b4349 (patch)
tree447ff6311e5f8cd173d49e1cab32d5c95fc2d700
parentba9daf20bc986e405a98eabb389f14ee713060fc (diff)
downloadgleam_stdlib-115afa61406cdc77e68133bc5a02f937911b4349.tar.gz
gleam_stdlib-115afa61406cdc77e68133bc5a02f937911b4349.zip
improve int.floor_divide
-rw-r--r--src/gleam/int.gleam10
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)
}
+ }
}
}