我正在为这个C风格的for循环寻找 Swift 3 Equivalence :
double upperBound = 12.3
for (int i = 0; i < upperBound; ++i) {
// Do stuff
}
我在考虑这样的事情:
var upperBound = 12.3
for i in 0..<Int(upperBound) {
// Do stuff
}
动态upperBound
破坏了天真的方法。自upperBound = 12.3
以来,上述代码不适用于Int(12.3) = 12
。 i
会循环显示[0, ..., 11]
( 12排除)。自i in 0...Int(upperBound)
以来,upperBound = 12.0
无法为Int(12.0) = 12
工作。 i
会遍历[0, ..., 12]
( 12包含)。
处理这种情况的 Swift 3 方式是什么?
答案 0 :(得分:0)
感谢Martin R提供更多Swift-y答案:
您可以使用行为为detailed here的FloatingPoint协议来始终向上舍入:
upperBound.rounded(.up)
原始答案:
根据this answer,使用ceil(upperBound)
会导致大于(在您的示例中)12的任何值被舍入到13。