Swift 3 - 替代C风格的循环(循环而int较小的double)

时间:2017-03-02 20:13:26

标签: swift for-loop swift3 range

我正在为这个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) = 12i会循环显示[0, ..., 11] 12排除)。自i in 0...Int(upperBound)以来,upperBound = 12.0无法为Int(12.0) = 12工作。 i会遍历[0, ..., 12] 12包含)。

处理这种情况的 Swift 3 方式是什么?

1 个答案:

答案 0 :(得分:0)

感谢Martin R提供更多Swift-y答案:

您可以使用行为为detailed here的FloatingPoint协议来始终向上舍入: upperBound.rounded(.up)

原始答案:

根据this answer,使用ceil(upperBound)会导致大于(在您的示例中)12的任何值被舍入到13。