一个阿拉伯数字转换成汉字的方法
--阿拉伯数字转汉字
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