Lua实战之拆分整数

Description

将指定的整数按规则由大到小拆分成多个更小的整数!

e.g.

被拆分的的整数:23

拆分规则:{1, 2, 3}

拆分结果:7个3,1个2

Implemention

function splitNum(targetNum, ruleTbl)
    if #ruleTbl == 0 then
        return targetNum
    end

    for i = #ruleTbl, 1, -1 do
        local count = math.modf(targetNum / ruleTbl[i])
        if count > 0 then
            print(ruleTbl[i], count)
            targetNum = targetNum % ruleTbl[i]
            if targetNum == 0 then
                break
            end
        end
    end
    if targetNum > 0 then
        print("split failed->", targetNum)
    end    
end

local targetNum = 23
local ruleTbl = {1, 2, 3}
splitNum(targetNum, ruleTbl)
-- 3	7
-- 2	1

Tips

浮点型的数由于精度问题,不能像整数这样拆分!但是可以先将浮点型的数转成整数进行拆分,再还原回去即可!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章