Lua中的数值向上取整问题

我想在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) -> 返回220,因为math.floor返回最接近但不大于220.000000000000028的整数。

点赞
用户107090
用户107090

尝试使用 tonumber(string.format("%.0f",2.2*100))

2018-10-12 03:18:29