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

浮點型的數由於精度問題,不能像整數這樣拆分!但是可以先將浮點型的數轉成整數進行拆分,再還原回去即可!

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