阿拉伯数字转换汉字,到一兆以内,一般应用应该够用了

一个阿拉伯数字转换成汉字的方法


--阿拉伯数字转汉字
local test = {}
test.__index = {}


Language = {
num_text0 = "零",
num_text1 = "一",
num_text2 = "二",
num_text3 = "三",
num_text4 = "四",
num_text5 = "五",
num_text6 = "六",
num_text7 = "七",
num_text8 = "八",
num_text9 = "九",
num_text10 = "十",
num_text100 = "百",
num_text1000 = "千",
num_text10000 = "万",
num_text10X9 = "亿",
}
Language.Get = function (str)
return Language[str]
end


local function numberToString(num)
    if nil == tonumber(num) then
        return ""
    end
    local retStr = ""
    local totolLen = string.len(num)
    local iLen = totolLen
    local i = 0
    local lastNum = nil
if num > 100000000 then
retStr = retStr .. test.numberToString(math.floor(num / 100000000))..Language.Get("num_text10X9")
        num = num%100000000
end
    if num > 100000 then
        retStr = retStr .. test.numberToString(math.floor(num / 10000))..Language.Get("num_text10000")
        num = num%10000
    end
iLen = string.len(num)
    while(iLen > 0) do
        iLen = iLen - 1
        local wei = math.floor(math.pow(10,iLen)) 
        local danwei = ""
        local curNum = math.floor(num/wei)
        if wei >= 10 then
            danwei = Language.Get("num_text"..wei)
        end
        local curNumStr = ""
        if lastNum == nil then
            if totolLen == 2 and curNum == 1 then


            else
                curNumStr = curNumStr .. Language.Get("num_text"..curNum)
            end
        else
            if lastNum == 0 then
                if curNum ~= 0 then
                    curNumStr = Language.Get("num_text0") .. Language.Get("num_text"..curNum)
                else
                    danwei = ""
                end
            else
                if curNum ~= 0 then
                    curNumStr = curNumStr .. Language.Get("num_text"..curNum)
                else
                    danwei = ""
                end
            end
        end
        lastNum = curNum
        retStr = retStr .. curNumStr .. danwei
        num = num%wei
    end


    return retStr
end


local function t()
    print(numberToString(12345))
    print(numberToString(1234567))
print(numberToString(12345678901000))
end


test.t = t
test.numberToString = numberToString
return test




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值