【问题标题】:Lua math ceil round up number when there is no digits after decimal point当小数点后没有数字时,Lua math ceil 将数字四舍五入
【发布时间】: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 的最接近整数。感谢您的回答!

标签: lua ceil


【解决方案1】:

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

【讨论】:

  • math.floor(2.2*100 + 0.5) 也可以!谢谢@lhf
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多