加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

浮点 – 在Lua中使用modulo时不准确

发布时间:2020-12-14 21:47:54 所属栏目:大数据 来源:网络整理
导读:我刚刚在Lua使用了modulo(%),我注意到它出于某种原因非常不准确.我在“魔兽世界”中使用它,但我认为它至少在某种程度上是最新的. 无论如何,使用以下示例,输出将为1; print((0.6/(0.1^(2-1)))%1) 但是当我使用以下内容时,它将返回0; print((0.6*(10^(2-1)))%
我刚刚在Lua使用了modulo(%),我注意到它出于某种原因非常不准确.我在“魔兽世界”中使用它,但我认为它至少在某种程度上是最新的.

无论如何,使用以下示例,输出将为1;

print((0.6/(0.1^(2-1)))%1)

但是当我使用以下内容时,它将返回0;

print((0.6*(10^(2-1)))%1)

就我受过教育而言,0.6 / 0.1应相当于0.6 * 10.

这不是一个问题或问题,但我只是对原因感到好奇.在我看来,数学中的不准确性会非常具有破坏性.

解决方法

如果查看Lua手册,%操作定义为

a % b == a - math.floor(a/b)*b

所以表达

6 - math.floor(6/1) * 1

将等于零.

但是,由于浮点不准确(0.1不存在浮点数,最接近应为0.1000000014 ……),这些应该是您的中间结果:

> print(math.floor(0.6*10))
6
> print(math.floor(0.6/.1))
5

所以你得到了

6 - 6 * 1 = 0
6 - 5 * 1 = 1

进一步阅读

> Lua Manual
> Wikipedia: Floating-Point accuracy

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读