2012-09-13 75 views
2

以下所有值都是雙精度值,但switch需要一個整數值。有沒有辦法解決?在Switch語句中使用雙精度

switch(fivePercentValue){ 
case floor((5*fivePercentValue)/100): 
    fivePercent_.backgroundColor = [UIColor greenColor]; 
    fivePercentLabel_.textColor = [UIColor greenColor]; 
    break; 
case ceil((5*fivePercentValue)/100): 
    fivePercent_.backgroundColor = [UIColor greenColor]; 
    fivePercentLabel_.textColor = [UIColor greenColor]; 
    break; 
default: 
    fivePercent_.backgroundColor = [UIColor redColor]; 
    fivePercentLabel_.textColor = [UIColor redColor]; 
    break; 
+3

是的 - 'if' /'else if' /'else'。 – Mac

+0

爲平等而浮點比較從來不是一個好主意,所以在浮點上切換是一個非常糟糕的主意。 –

+1

'case'值必須是編譯時常量。 –

回答

4

你只是使用if else和測試範圍,但你可以在你fivePercentValue執行一些數學,然後將其轉換爲整數,這樣不同的整數表示,例如不同範圍的可能更好

switch((int)(value*10.0)) 
{ 
    case 0:  // this is 0.0 <= value < 0.1 
     break; 
    case 1:  // this is 0.1 <= value < 0.2 
     break; 
    case 2:  // this is 0.2 <= value < 0.3 
     break; 
    .... 
}