2017-03-02 21 views
1

我正在尋找一個斯威夫特3等價這個C風格的for循環:斯威夫特3 - 替代的C風格的for循環(循環而INT小雙)

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) = 12i將循環通過[0, ..., 12]12包括)。

什麼是Swift 3處理這種情況的方式是什麼?

+2

有沒有可以調用的ceiling()函數?編輯 - 這個答案做的訣竅:http://stackoverflow.com/a/24182426/1061011 – Chris

+1

我很困惑,你的目標是什麼......你想要最後一個數字你循環是什麼? – Bawpotter

+0

是的,我不確定你想要達到什麼效果。 – Alexander

回答

1

感謝馬丁的R用這種更斯威夫特-Y回答:

您可以使用浮點協議,其行爲是detailed here的,總是圍捕: upperBound.rounded(.up)

原來的答案:

基於this answer,使用ceil(upperBound)將導致任何值大於(在你的例子中)12被四捨五入到13.

+1

或'upperBound.rounded(.up)' –

+0

我更喜歡那個,你想做一個新的答案,還是應該編輯我的? – Chris

+0

不需要單獨的答案,隨時編輯你的。 –