Description
将number类型的数字转成指定格式的字符串!
规则如下:
-
最多保留两位小数(舍去从第三位小数开始的值);
-
大于等于1万,以万为单位。大于等于1亿,以亿为单位。
e.g.
0.009 -> 0
-88.8 -> -88.8
123.456 -> 123.45
-888.888 -> -888.88
1234000 -> 123.4万
-8888888 -> -888.88万
12300000000 -> 123亿
-88888888888 -> -888.88亿
Implemention
local LogManager = require("LogManager")
function getFormatNumStr(targetNum)
local num = tonumber(targetNum)
if not num then
print(string.format("Error: %s is a fault input !!!", targetNum))
return targetNum
end
if math.abs(num) >= 10^8 then
if num % 10^8 == 0 then
return tostring(num / 10^8) .. "亿"
else
local transNum = math.modf(num / 10^6)
return tostring(transNum / 100) .. "亿"
end
elseif math.abs(num) >= 10^4 then
if num % 10^4 == 0 then
return tostring(num / 10^4) .. "万"
else
local transNum = math.modf(num / 100)
return tostring(transNum / 100) .. "万"
end
else
if num % 1 == 0 then
return tostring(num)
else
local transNum = math.modf(num * 100)
return tostring(transNum / 100)
end
end
end
local testRetTbl = {
getFormatNumStr("Hello fightsyj"),
getFormatNumStr(0.009),
getFormatNumStr(-88.8),
getFormatNumStr(123.456),
getFormatNumStr(-888.888),
getFormatNumStr(1234000),
getFormatNumStr(-8888888),
getFormatNumStr(12300000000),
getFormatNumStr(-88888888888)
}
LogManager:dump(testRetTbl, "testRetTbl")
--[[
Error: Hello fightsyj is a fault input !!!
- "testRetTbl" = {
- 1 = "Hello fightsyj"
- 2 = "0"
- 3 = "-88.8"
- 4 = "123.45"
- 5 = "-888.88"
- 6 = "123.4万"
- 7 = "-888.88万"
- 8 = "123亿"
- 9 = "-888.88亿"
- }
]]