2012-06-27 155 views
1

爲什麼當我在一個循環中運行這段代碼,只是整個數字打印到控制檯上?浮動只打印整數?

for (int i = 1; i <= 50; i++) { 
     zombieSpeed[i] = (((arc4random()%40)+2)/7); 
     NSLog(@"%f", zombieSpeed[i]); 
} 

回答

4

的問題是在這裏

zombieSpeed[i] = (((arc4random()%40)+2)/7); 

,而不是40,2,7,你應該使用40.0,2.0,7.0

另外,還要確保ZombieSpeed是float類型的

+1

是的,問題是,它是做整數運算,因爲沒有表達的部件是浮點型,處理器可以通過執行運算的整數保存工作只 –

+0

哇感謝我從來沒有穿過它以前!哦,當然這是一個浮動 –

2

這條線需要使用Float值(40.0,2.0,7.0)

zombieSpeed[i] = (((arc4random()%40)+2)/7); 
1

劃分爲整數除法,使用顯式的小數點40.0或類型轉換,以使得至少一個操作數是浮點,其upcasts被評價爲浮點整個表達式。確保任何左手側可變要對其分配的計算機值是浮點型具有相等或更大的寬度的(以保持精度)。