功能实现代码
math_util.lua
local _M= {_VERSION = "0.0.1", _NAME = "math_util", class_type = ""}
-- number - 原始带小数的数据 place - 保留小数位数
function _M.decimal_truncate(number, place)
-- 计算小数,1位小数就是0.1,2位小数就是0.01
local rate = 1 / math.pow(10, place)
return number - number%rate
end
return _M
解析
这里实现保留特定位数小数功能的原理是,首先计算特定位数的小数值,然后将原始数据对特定位数小数值做取余操作得到除保留小数外的数据,然后两者相减得到结果。这里类似于数据按照指定位数截取,并没有实现四舍五入。比如:
print(decimal_truncate(12.3512, 1))
的打印结果就是12.3,而不是12.4。另外当原始数据不够指定位数长度时,也是直接返回原数据,并不能补零。比如以下代码:
local math_util = require("util.math_util") --保存以上代码的文件路径 print(math_util.decimal_truncate(13.2, 2))
打印结果就是 13.2 ,而不是 13.20 ,转换为string类型或许可以实现。