检查一个整数是否可以被另一个整数整除(Swift)

22

我需要检查一个整数是否能被另一个整数整除。

如果不能,我想将它四舍五入到最接近这个数字的倍数。

例如:

var numberOne = 3
var numberTwo = 5

numberTwo不是numberOne的倍数,因此我希望将numberTwo向上舍入为6。

我该如何做到这一点? 谢谢

4个回答

28

1)如果你想检查一个整数是否被另一个整数整除:

Swift 5

if numberOne.isMultiple(of: numberTwo) { ... }

Swift 4或更早版本

if numberOne % numberTwo == 0 { ... }

2) 将数值四舍五入到最接近的倍数的函数:

func roundToClosestMultipleNumber(_ numberOne: Int, _ numberTwo: Int) -> Int {
    var result: Int = numberOne
    
    if numberOne % numberTwo != 0 {
        if numberOne < numberTwo {
            result = numberTwo
        } else {
            result = (numberOne / numberTwo + 1) * numberTwo
        }
    }
    
    return result
}

22
你可以使用取模运算符%
numberTwo % numberOne == 0

模运算可以找到两个数之间整数除法的余数,例如:

20 / 3 = 6
20 % 3 = 20 - 6 * 3 = 2

20除以3的结果是6.666667 - 被除数(20)减去该商的整数部分与除数(3*6)相乘的积是模数(20-6*3),在这种情况下等于2。

如果模数为零,则被除数是除数的倍数。

有关模运算的更多信息,请参见维基百科页面。


第一部分对我有效,但是我不确定底线是什么意思。我该怎么计算出应该添加多少数字到20,使其能被3整除?我想要将其四舍五入。谢谢。 - Tom Coomer
更新了答案 - 希望这能解释一点。 - Antonio

7

Swift 5

isMultiple(of:)

如果这个值是给定值的倍数,则返回true,否则返回false。

func isMultiple(of other: Int) -> Bool

let rowNumber = 4

if rowNumber.isMultiple(of: 2) {
    print("Even")
} else {
    print("Odd")
}

2
您可以使用truncatingRemainder。例如,
if number.truncatingRemainder(dividingBy: 10) == 0 {                
    print("number is divisible by 10")   
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接