如何在Lua中使用math.floor实现小数位取整?
在Lua中用math.floor实现保留指定小数位的截断
首先得明确:math.floor()的作用是向下取整(截断所有小数部分),所以你原代码print(math.floor(12.5928))输出12完全符合它的设计逻辑——它会直接丢掉所有小数点后的数字,只留下整数部分。
如果你想得到12.5(也就是保留一位小数并截断后面的部分),可以用「放大->取整->缩小」的思路:
- 先把原数乘以10,把想要保留的小数位转化为整数部分:
12.5928 * 10 = 125.928 - 用
math.floor()处理这个放大后的数,截断掉新的小数部分:math.floor(125.928) = 125 - 最后把结果除以10,还原到原来的数量级:
125 / 10 = 12.5
对应的代码就是:
print(math.floor(12.5928 * 10) / 10) -- 输出 12.5
拓展:保留更多小数位的情况
如果需要保留两位小数(比如得到12.59),只需要把乘数/除数换成100即可:
print(math.floor(12.5928 * 100) / 100) -- 输出 12.59
小提示:关于浮点数精度
有时候Lua的浮点数计算可能会出现微小的精度误差(比如理论上的12.5可能显示为12.499999999999998),如果遇到这种情况,你可以结合string.format()来格式化输出,比如:
local num = math.floor(12.5928 * 10) / 10 print(string.format("%.1f", num)) -- 确保输出为12.5
内容的提问来源于stack exchange,提问作者Gatitos Mansion
相关产品推荐
相关产品推荐

