You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua中math.floor(21000*0.7)与math.floor(14700.0)返回值不一致问题

Lua 5.3.x/5.4.x中math.floor()的精度差异问题

在Lua 5.3和5.4系列版本里,用math.floor()处理两个看似等价的数值时,会出现结果不一致的情况:

  • 执行math.floor(21000*0.7),返回值是14699
  • 执行math.floor(14700.0),返回值是14700

这是浮点数的精度限制导致的:21000*0.7的计算结果并不是精确的14700.0,而是一个极其接近14700但略小于它的浮点数(比如实际存储值可能是14699.999999999998)。math.floor()的逻辑是向下取整,对这个略小的数值取整就会得到14699;而直接传入14700.0时,这个值可以被浮点数精确表示,所以取整结果就是14700。

内容的提问来源于stack exchange,提问作者Ace.Yin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 12:54:19