math.fmod 始终等于 math.mod?
我试图用以下代码找出 math.fmod 和 math.mod 之间的区别:
a={9.5 ,-9.5,-9.5,9.5}
b={-3.5, 3.5,-3.5,3.5}
for i=1,#a do
if math.fmod(a[i],b[i])~=math.mod(a[i],b[i]) then
print("yeah")
end
end
它从不打印“yeah”! 我应该在数组 a 和 b 中放入什么才能看到“是”?
math.fmod() 的文档说它返回 x 除以 y 的余数,将商向零舍入。
I tried to figure out the difference between math.fmod and math.mod with the following code:
a={9.5 ,-9.5,-9.5,9.5}
b={-3.5, 3.5,-3.5,3.5}
for i=1,#a do
if math.fmod(a[i],b[i])~=math.mod(a[i],b[i]) then
print("yeah")
end
end
It never prints "yeah"!
What should I put in array a and b to see "yeah"?
The documentation of math.fmod() say that it returns the remainder of the division of x by y that rounds the quotient towards zero.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
math.mod
与math.fmod
具有相同功能。实际上,math.mod
的存在只是为了兼容以前的版本;手册中没有列出。在代码中尝试使用math.modf
而不是math.mod
。math.mod
is the same function asmath.fmod
. Actually,math.mod
exists only for compatibility with previous versions; it's not listed in the manual. Trymath.modf
instead ofmath.mod
in your code.Lua 中的模定义为“将商向负无穷大舍入的除法的余数” -链接此处 - 这与 fmod 的定义不同(正如您在原始帖子中引用的那样)。
你真正需要做的是使用模运算符 (%) 而不是 math.mod:
Modulo in Lua is defined as "the remainder of a division that rounds the quotient towards minus infinity" -Link here - Which is different from the definition of fmod (as you quoted in your original post).
What you really need to do is use the modulo operator (%) rather than math.mod: