Lua:
数字取整
如何操作:
-- Lua中的基本四舍五入操作并不内置,但你可以定义一个函数:
function round(num)
return num >= 0 and math.floor(num + 0.5) or math.ceil(num - 0.5)
end
print(round(3.5)) -- 4
print(round(2.3)) -- 2
print(round(-1.6)) -- -2
-- 要四舍五入到特定的小数位:
function round(num, decimalPlaces)
local mult = 10^(decimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
print(round(3.14159, 2)) -- 3.14
print(round(1.98765, 3)) -- 1.988
深入了解
与其他一些语言不同,Lua默认情况下不包括四舍五入函数。历史上,你需要编写自己的或使用第三方库。常见的解决方案依赖于使用 math.floor()
用于四舍五入向下以及 math.ceil()
用于四舍五入向上,并且根据数字的符号,在执行此操作之前加上或减去0.5。
自定义函数的替代方法包括如 “lua-users wiki” 或 “Penlight” 等库。每个都有其好处和权衡,比如额外的功能或更多的开销。
在内部,这些函数通常通过利用计算机存储浮点数的方式来工作。对于你想要四舍五入的正浮点数加上0.5,将会推动它超过下一个整数值的阈值,所以当你应用 math.floor()
时,它会四舍五入到那个最近的整数。