范围内的数字加法(溢出)

时间:2018-08-28 08:07:54

标签: lua numbers

又是我。那就对了。回到更多新秀错误。嘿。

我想知道是否有办法做到这一点,因为我的尝试运气不好,需要其他人的帮助...比我更有能力解决问题。

我希望具有这样的功能:

local function numberAddWithinRange(numberStart, add, min, max)
    local x;numberStart = numberStart + add;

    if numberStart<min then
        x = min + (numberStart*(numberStart>0 and -1 or 1)); -- - numberStart;
        return numberAddWithinRange(max, -x, min, max);
    elseif numberStart>max then
        x = min + (numberStart*(numberStart>0 and -1 or 1));-- - numberStart;
        print("X is:", x);
        return numberAddWithinRange(min, x, min, max);
    else
        x = numberStart;
    end;
    return x;

end;

这可以, 排序。

您知道,我想做的是,当我将245乘以20,范围为25和50时,它将一遍又一遍地从25-> 50、25-> 50一直添加到它到达使用所有“溢出”数字的地步,然后返回剩余的数字。 (如果max == 50,则51变为26,然后继续添加,依此类推)

但是,我的功能似乎无法正确执行,无论是夜间还是无法解决的问题。

作为参考,“ after2”应等于“ startNum”,但不是。

local startNum = 200;
local after = numberAddWithinRange(startNum, 400, 33, 127);
local after2 = numberAddWithinRange(after, -400, 33, 127);
print(after, after2, after2==startNum)

无论是在Google还是在stackoverflow上,我都到处看看,但没有找到任何可以帮助我的东西。 我可能只是愚蠢...但是希望有人可以帮助我。

我也知道我可以这样做:

local gn = function(num, add, min, max)
    for i=add<0 and -1 or 1, add do
        num = num + (1 * (add<0 and -1 or 1));
        if num > max then
            num = min;
        elseif num < min then
            num = max;
        end;
    end;
    return num;
end;

但是,在我看来,这将是非常低效的,因此任何知识渊博的人:请帮助。

0 个答案:

没有答案