lua 数字格式化输出

需求:

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

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值