在 Lua 中复制 C# Math.IEEERemainder?
Replicate C# Math.IEEERemainder in Lua?
我正在尝试在 Lua 中复制 Math.IEEERemainder(在 C# 中)的行为。我知道我总是可以从头开始写整个东西,但如果有内置的东西,我会尽量避免它。
我试过 % 运算符和 math.fmod。 None 他们的行为相同。
例如:
Math.IEEERemainder(3.0,2.0) //-1
(3.0%2.0) --1
math.fmod(3.0,2.0) --1
function IEEERemainder(x, y)
y = y + 0.0
local q1 = math.floor(x/y)
local q2 = math.ceil(x/y)
local r1 = x - y * q1
local r2 = x - y * q2
local d1 = math.abs(r1)
local d2 = math.abs(r2)
local r = (d1 < d2 or d1 == d2 and q1 % 2 == 0) and r1 or r2
return r == 0 and x < 0 and -r or r
end
我正在尝试在 Lua 中复制 Math.IEEERemainder(在 C# 中)的行为。我知道我总是可以从头开始写整个东西,但如果有内置的东西,我会尽量避免它。
我试过 % 运算符和 math.fmod。 None 他们的行为相同。
例如:
Math.IEEERemainder(3.0,2.0) //-1
(3.0%2.0) --1
math.fmod(3.0,2.0) --1
function IEEERemainder(x, y)
y = y + 0.0
local q1 = math.floor(x/y)
local q2 = math.ceil(x/y)
local r1 = x - y * q1
local r2 = x - y * q2
local d1 = math.abs(r1)
local d2 = math.abs(r2)
local r = (d1 < d2 or d1 == d2 and q1 % 2 == 0) and r1 or r2
return r == 0 and x < 0 and -r or r
end