我需要检查一个整数是否能被另一个整数整除。
如果不能,我想将它四舍五入到最接近这个数字的倍数。
例如:
var numberOne = 3
var numberTwo = 5
numberTwo
不是numberOne
的倍数,因此我希望将numberTwo
向上舍入为6。
我该如何做到这一点? 谢谢
1)如果你想检查一个整数是否被另一个整数整除:
if numberOne.isMultiple(of: numberTwo) { ... }
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
}
%
:numberTwo % numberOne == 0
模运算可以找到两个数之间整数除法的余数,例如:
20 / 3 = 6
20 % 3 = 20 - 6 * 3 = 2
20除以3的结果是6.666667 - 被除数(20)减去该商的整数部分与除数(3*6)相乘的积是模数(20-6*3),在这种情况下等于2。
如果模数为零,则被除数是除数的倍数。
有关模运算的更多信息,请参见此维基百科页面。
isMultiple(of:)
如果这个值是给定值的倍数,则返回true,否则返回false。
func isMultiple(of other: Int) -> Bool
let rowNumber = 4
if rowNumber.isMultiple(of: 2) {
print("Even")
} else {
print("Odd")
}
truncatingRemainder
。例如,if number.truncatingRemainder(dividingBy: 10) == 0 {
print("number is divisible by 10")
}