From eaadb4ace6ef45106c6c27f5810a04f4f2450f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Reuh=20Fildadut?= Date: Tue, 16 Jan 2024 14:40:28 +0100 Subject: [PATCH] [stdlib] fix integer division --- anselme/stdlib/number.lua | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/anselme/stdlib/number.lua b/anselme/stdlib/number.lua index a3975e5..0e24300 100644 --- a/anselme/stdlib/number.lua +++ b/anselme/stdlib/number.lua @@ -44,7 +44,16 @@ return { { "_-_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number - b.number) end }, { "_*_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number * b.number) end }, { "_/_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number / b.number) end }, - { "_//_", "(a::is number, b::is number)", function(state, a, b) return Number:new(math.floor(a.number / b.number)) end }, + { + "_//_", "(a::is number, b::is number)", function(state, a, b) + local r = a.number / b.number + if r < 0 then + return Number:new(math.ceil(r)) + else + return Number:new(math.floor(r)) + end + end + }, { "_%_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number % b.number) end }, { "_^_", "(a::is number, b::is number)", function(state, a, b) return Number:new(a.number ^ b.number) end }, { "-_", "(a::is number)", function(state, a) return Number:new(-a.number) end },