From efd1df783eaa21c2151b0a45e2544a04958938a1 Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Wed, 22 Jul 2026 12:12:01 +0300 Subject: [PATCH 1/4] Fix #3659 Adds rounding to numbers --- lua/entities/gmod_wire_expression2/core/number.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/entities/gmod_wire_expression2/core/number.lua b/lua/entities/gmod_wire_expression2/core/number.lua index de7c7dcd17..11570d65d8 100644 --- a/lua/entities/gmod_wire_expression2/core/number.lua +++ b/lua/entities/gmod_wire_expression2/core/number.lua @@ -581,6 +581,9 @@ __e2setcost(10) local CHARS = string.Split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "") local function tobase(number, base, self) + number = floor(number) + base = floor(base) + if base < 2 or base > 36 or base ~= base or number == 0 or number ~= number then return "0" end if base == 10 then return tostring(number) end if number < 0 then return "-" .. tobase(-number, base, self) end From 0efee7d44d760a27f5c94edc9573841f14941442 Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Wed, 22 Jul 2026 15:39:12 +0300 Subject: [PATCH 2/4] Fixes --- lua/entities/gmod_wire_expression2/core/number.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lua/entities/gmod_wire_expression2/core/number.lua b/lua/entities/gmod_wire_expression2/core/number.lua index 11570d65d8..42b06bb949 100644 --- a/lua/entities/gmod_wire_expression2/core/number.lua +++ b/lua/entities/gmod_wire_expression2/core/number.lua @@ -581,13 +581,16 @@ __e2setcost(10) local CHARS = string.Split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "") local function tobase(number, base, self) - number = floor(number) - base = floor(base) - - if base < 2 or base > 36 or base ~= base or number == 0 or number ~= number then return "0" end if base == 10 then return tostring(number) end + if base ~= base or number ~= number then return "0" end if number < 0 then return "-" .. tobase(-number, base, self) end + number = floor(number) + if number == 0 then return "0" end + + base = floor(base) + if base < 2 or base > 36 then return "0" end + local out, loops, d = {}, floor(log(number) / log(base)) + 1, 0 if loops == inf then return "inf" end From 157ecfc9d2a1ce324fb8636a261db85bf4b52dd8 Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Thu, 23 Jul 2026 10:56:08 +0300 Subject: [PATCH 3/4] Check for nan first --- lua/entities/gmod_wire_expression2/core/number.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/entities/gmod_wire_expression2/core/number.lua b/lua/entities/gmod_wire_expression2/core/number.lua index 42b06bb949..0c478c11a4 100644 --- a/lua/entities/gmod_wire_expression2/core/number.lua +++ b/lua/entities/gmod_wire_expression2/core/number.lua @@ -581,8 +581,9 @@ __e2setcost(10) local CHARS = string.Split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "") local function tobase(number, base, self) - if base == 10 then return tostring(number) end if base ~= base or number ~= number then return "0" end + + if base == 10 then return tostring(number) end if number < 0 then return "-" .. tobase(-number, base, self) end number = floor(number) From d492e4bb510b89b8439e6cf9aae39fd0b5ddc9f3 Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Thu, 23 Jul 2026 11:14:09 +0300 Subject: [PATCH 4/4] Small optimization + check rounded base instead --- lua/entities/gmod_wire_expression2/core/number.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lua/entities/gmod_wire_expression2/core/number.lua b/lua/entities/gmod_wire_expression2/core/number.lua index 0c478c11a4..b80bb3a4ec 100644 --- a/lua/entities/gmod_wire_expression2/core/number.lua +++ b/lua/entities/gmod_wire_expression2/core/number.lua @@ -581,17 +581,16 @@ __e2setcost(10) local CHARS = string.Split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "") local function tobase(number, base, self) + if number < 0 then return "-" .. tobase(-number, base, self) end if base ~= base or number ~= number then return "0" end + base = floor(base) if base == 10 then return tostring(number) end - if number < 0 then return "-" .. tobase(-number, base, self) end + if base < 2 or base > 36 then return "0" end number = floor(number) if number == 0 then return "0" end - base = floor(base) - if base < 2 or base > 36 then return "0" end - local out, loops, d = {}, floor(log(number) / log(base)) + 1, 0 if loops == inf then return "inf" end