【发布时间】:2015-01-26 08:52:09
【问题描述】:
我需要检查一个整数是否能被另一个整数整除。
如果不是,我想将其四舍五入到最接近的倍数。
例子:
var numberOne = 3
var numberTwo = 5
numberTwo 不是 numberOne 的倍数,因此我希望将 numberTwo 舍入到 6。
我该怎么做? 谢谢
【问题讨论】:
标签: ios swift integer division
我需要检查一个整数是否能被另一个整数整除。
如果不是,我想将其四舍五入到最接近的倍数。
例子:
var numberOne = 3
var numberTwo = 5
numberTwo 不是 numberOne 的倍数,因此我希望将 numberTwo 舍入到 6。
我该怎么做? 谢谢
【问题讨论】:
标签: ios swift integer division
您可以使用模运算符%:
numberTwo % numberOne == 0
模求2个数之间整数除法的余数,例如:
20 / 3 = 6
20 % 3 = 20 - 6 * 3 = 2
20/3 的结果是 6.666667 - 被除数 (20) 减去除数乘以除数 (3 * 6) 的整数部分是模 (20 - 6 * 3) ,在这种情况下等于 2 .
如果模数为零,则被除数是除数的倍数
在this wikipedia 页面了解有关模数的更多信息。
【讨论】:
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
}
【讨论】:
isMultiple(of:)
如果此值是给定值的倍数,则返回 true 值,否则为假。
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")
}
【讨论】: