【问题标题】:In Lua, how can I tell if a number divides evenly into another number?在 Lua 中,我如何判断一个数字是否均匀地除以另一个数字?
【发布时间】:2012-01-21 01:23:09
【问题描述】:

在 Lua 中,我如何判断一个数是否能整除另一个数?即没有余数?我只是在寻找布尔值 true 或 false。

12/6 = 2 (true)
18/6 = 3 (true)
20/6 = 3.(3) (false)

【问题讨论】:

    标签: math lua division coronasdk


    【解决方案1】:

    将除法的余数与零进行比较,如下所示:

    12 % 6 == 0
    
    18 % 6 == 0
    
    20 % 6 ~= 0
    

    模运算符 (%) 返回除法的余数。 12 和 6 为 0,但 20 和 6 为 2。

    它使用的公式是:a % b == a - math.floor(a/b)*b

    【讨论】:

    • % 的酷之处在于它也适用于实数
    【解决方案2】:

    使用模运算符的问题是,它不能在负数上正常工作。如果您要使用负数,请改用math.fmod

    maxtothemax@maxtothemax-mint ~ $ lua 
    > return  -13%6
    5
    > return  13%6
    1
    > return math.fmod (-13, 6)
    -1
    > return math.fmod (13, 6)
    1
    > 
    

    【讨论】:

    • 对于与 0 的比较,模运算符似乎可以正常工作。无需进行额外的函数调用。
    • -13 % 6 == 5 是否不正确,见仁见智。这通常是您想要的行为。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多