lua 数字格式化输出

来源:互联网 发布:centos 文件夹扩容 编辑:程序博客网 时间:2024/06/05 00:32

需求:

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), "%.") thentmp_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    endend


原创粉丝点击