我必须在某些健康行业编号上运行一些算法以进行验证。其中一个需要检查某个点的总数是否以零结束,如果没有得到以零结尾的下一个最高数字。我有这个代码,但我想知道是否有更好的方法:
let strTotal = String(iTotal)
var iSubtractor = iTotal
if Int(String(strTotal.last!))! != 0 {
var bIsZeroEnding = false
repeat {
iSubtractor += 1
let strSubstractor = String(iSubtractor)
if Int(String(strSubstractor.last!))! == 0 {
bIsZeroEnding = true
}
} while !bIsZeroEnding
}
Doh ......我确实看到了我的var名称中的拼写错误... strSubstractor ...:D
答案 0 :(得分:4)
我有这段代码,但我想知道是否有更好的方法来做到这一点
是的,有。使用
可以更简单地将(非负)整数舍入到下一个10的倍数mklink "E:\Folder A\Folder B" "E:\Folder A\Folder C\bibliography.bib"
无需任何转换为字符串。我们加9然后 向下舍入到10的下一个倍数(使用的事实 整数除法截断结果为整数结果。)
答案 1 :(得分:1)
这就是你需要做的所有事情:
var desiredNumber = ceil(Double(iTotal)/10)*10
此方法的工作原理:
答案 2 :(得分:1)
您可以使用ceil
。它适用于(非负)和(负)数字。
extension CGFloat {
func nearest(to num: CGFloat) -> CGFloat {
return num * ceil(self/num)
}
}
let value: CGFloat = 53.0
print(value.nearest(to: 10))
输出:60.0
或者对于纯int
,您可以在remainder
运算符(%)
的帮助下获取它。
let value: Int = 33
let rem: Int = value%10
// Here, If rem == 0 that means number is fully divisible by 10 (Contains 0 at last)
let result: Int = (rem == 0) ? value : value + (10 - rem)