---单位换算
function ConfigUtil.getFormatNumStr(targetNum)
targetNum=targetNum:gsub("%D+", "") ---防止出现空格
local length = string.len(targetNum)
if length <= 3 then ---1000以内的使用原数字
return targetNum
end
local UtilIndex =math.floor((string.len(targetNum) - 1)/3)---获得单位索引
local util = ConfigUtil.GetUtil(UtilIndex) ---获取单位
local dianPos = length - UtilIndex * 3 ---小数点的位置
local index=dianPos+2 ---新数字的长度(未包含小数点)
local strNum = string.sub(targetNum, 1, index) ---新数字
local newStr = ConfigUtil.stringInsert(strNum, ".", dianPos)---插入小数点
index=index+1 ---加入小数点后的长度
local numStr1=string.sub(newStr, index, index)---新数字末尾数字
local numStr2=string.sub(newStr, index-1, index-1)新数字倒数第二个数字
if numStr1== "0" and numStr2 == "0" then ---如果最后两个数字都是0,则去掉最后两位和小数点
return string.format("%s%s", string.sub(newStr, 1, dianPos), util)
---如果是末尾是0,那就去掉末尾的0
elseif numStr1 == "0" and numStr2 ~= "0" then
return string.format("%s%s", string.sub(newStr, 1, index-1), util)
end
return string.format("%s%s", newStr, util)
end
function ConfigUtil.GetUtil(index)
local utilList = {"","K","M","B","T","a","c","d","e","f","h","l","n","p","q"}
for i , v in ipairs(utilList) do
if i==index+1 then
return v
end
end
end
function ConfigUtil.stringInsert(str, curStr, pos)
if not str then
return curStr
end
local length = string.len(str)
if pos >= length then
return str..curStr
end
local strNum1 = string.sub(str, 1, pos)
local strNum2 = string.sub(str, pos+1 , length )
return strNum1..curStr..strNum2
end
unity Lua 单位换算保留两位小数
于 2022-05-28 17:41:07 首次发布