【发布时间】:2019-03-17 04:29:17
【问题描述】:
我想在 Lua 中使用 math.ceil 对数字进行四舍五入。
有些情况是有意义的,例如:
- ceil(260.5) -> 261
但有些情况很奇怪,例如:
- ceil(2.2*100) -> 221 # 假设没有向上取整,答案是220
我不知道为什么会这样,如果我想在小数点后将数字四舍五入,如果只有整数则不四舍五入怎么办?
-- 更新: 感谢@cyclaminist 的回答: 2.2 * 100 实际上比 220.0 大一点,因为 2.2 不能完全表示为浮点数。尝试 ('%.15f'):format(2.2 * 100): 对我来说,它给出了 '220.000000000000028'
Ceil会返回最接近且不小于220.000000000000028的整数,因此返回221。
得到 220 的解决方案是: math.floor(2.2*100 + 0.5) -> return 220,因为 math.floor 返回最接近但不大于 220.000000000000028
【问题讨论】:
-
2.2 * 100实际上比220.0大一点,因为2.2不能完全表示为浮点数。试试('%.15f'):format(2.2 * 100):对我来说,它给了'220.000000000000028'。 -
@cyclaminist ,知道了,这样 ceil 将把 221 作为 2.2*100 的最接近整数。感谢您的回答!