需求:
1,金币个数小于5位数,全显示。
2,金币个数 >= 5且 < 9,除以1w,保留2位小数后带有“万”单位。
3,金币个>=9,除以1亿,保留2位小数后带有“亿”单位。
4,带有“万”、“亿”并保留两位小数,但不做四舍五入处理。如:12345缩进万,显示1.23万。
细节:
若小数点最后位是0,则隐藏最后位的0;若小数点后两位为0,则隐藏小数点和两个0。
直接上代码:
function format_number(number)
if number == nil or type(number) ~= "number" then
print("参数数值类型错误")
else
local num_length, num_str = string.len(number), tostring(number)
local function handler_dot(curNum, curUnit)
local tmp_decimal_str = ""
local integer_num, dot_num = math.modf(curNum/curUnit)
local decimal_num = curNum/curUnit
if decimal_num ~= 0 and string.find(tostring(decimal_num), "%.") then
tmp_decimal_str = tmp_decimal_str .. string.sub(tostring(decimal_num), string.find(tostring(decimal_num), "%."), string.find(tostring(decimal_num), "%.") + 2)
local first_str = string.sub(tostring(tmp_decimal_str), 2, 2)
local second_str= string.sub(tostring(tmp_decimal_str), 3, 3)
if second_str ~= "0" and second_str ~= "" then
--tmp_decimal_str = tmp_decimal_str .. string.sub(tostring(decimal_num), 2, string.find(tostring(decimal_num), ".") + 3)
else
if first_str ~= "" and first_str ~= "0" then
tmp_decimal_str = "." .. first_str
else
tmp_decimal_str = ""
end
end
end
return tostring(integer_num) .. tmp_decimal_str
end
if num_length < 5 then
return num_str
elseif num_length >= 5 and num_length < 9 then--万
return handler_dot(number, 10^4) .. "万"
elseif num_length >= 9 then--亿
return handler_dot(number, 10^8) .. "亿"
end
end
end