fix: number_translator.lua 对整数再次拆分的错误 fix #696

This commit is contained in:
Dvel 2024-02-23 16:06:29 +08:00
parent a20ba10f69
commit b53f634665

View File

@ -63,11 +63,8 @@ end
-- 数值转换为中文 -- 数值转换为中文
local function number2cnChar(num, flag, digitUnit, wordFigure) --flag=0中文小写反之为大写 local function number2cnChar(num, flag, digitUnit, wordFigure) --flag=0中文小写反之为大写
local st, result local result = ""
num = tostring(num)
result = ""
local num1, num2 = math.modf(num)
if tonumber(num2) == 0 then
if tonumber(flag) < 1 then if tonumber(flag) < 1 then
digitUnit = digitUnit or { [1] = "", [2] = "亿" } digitUnit = digitUnit or { [1] = "", [2] = "亿" }
wordFigure = wordFigure or { [1] = "", [2] = "", [3] = "", [4] = "" } wordFigure = wordFigure or { [1] = "", [2] = "", [3] = "", [4] = "" }
@ -75,18 +72,19 @@ local function number2cnChar(num, flag, digitUnit, wordFigure) --flag=0中文小
digitUnit = digitUnit or { [1] = "", [2] = "亿" } digitUnit = digitUnit or { [1] = "", [2] = "亿" }
wordFigure = wordFigure or { [1] = "", [2] = "", [3] = "", [4] = "" } wordFigure = wordFigure or { [1] = "", [2] = "", [3] = "", [4] = "" }
end end
local lens = string.len(num1) local lens = string.len(num)
if lens < 5 then if lens < 5 then
result = formatNum(num1, flag) result = formatNum(num, flag)
elseif lens < 9 then elseif lens < 9 then
result = formatNum(string.sub(num1, 1, -5), flag) .. digitUnit[1] .. formatNum(string.sub(num1, -4, -1), flag) result = formatNum(string.sub(num, 1, -5), flag) .. digitUnit[1] .. formatNum(string.sub(num, -4, -1), flag)
elseif lens < 13 then elseif lens < 13 then
result = formatNum(string.sub(num1, 1, -9), flag) .. result = formatNum(string.sub(num, 1, -9), flag) ..
digitUnit[2] .. digitUnit[2] ..
formatNum(string.sub(num1, -8, -5), flag) .. digitUnit[1] .. formatNum(string.sub(num1, -4, -1), flag) formatNum(string.sub(num, -8, -5), flag) .. digitUnit[1] .. formatNum(string.sub(num, -4, -1), flag)
else else
result = "" result = ""
end end
result = result:gsub("^" .. wordFigure[1], "") result = result:gsub("^" .. wordFigure[1], "")
result = result:gsub(wordFigure[1] .. digitUnit[1], "") result = result:gsub(wordFigure[1] .. digitUnit[1], "")
result = result:gsub(wordFigure[1] .. digitUnit[2], "") result = result:gsub(wordFigure[1] .. digitUnit[2], "")
@ -94,9 +92,6 @@ local function number2cnChar(num, flag, digitUnit, wordFigure) --flag=0中文小
result = result:gsub(wordFigure[1] .. "$", "") result = result:gsub(wordFigure[1] .. "$", "")
if lens > 4 then result = result:gsub("^" .. wordFigure[2] .. wordFigure[3], wordFigure[3]) end if lens > 4 then result = result:gsub("^" .. wordFigure[2] .. wordFigure[3], wordFigure[3]) end
if result ~= "" then result = result .. wordFigure[4] else result = "数值超限!" end if result ~= "" then result = result .. wordFigure[4] else result = "数值超限!" end
else
return "数值超限!"
end
return result return result
end end