önce NSLog(@"%d", todaysCollection)
koyun Fakat PERCENTCOMPLETE hep 0
gösterir? Unutmayın ki bir şamandıradır - eğer onu bir int gibi yorumlamadan dönüştürürseniz, yanlış çıktı elde edersiniz. Örneğin, bu:
int x = 1750;
int y = 4000;
float result = 0;
if (x > 0) {
result = ((float)x/(float)y)*100;
}
NSLog(@"[SW] %0.1f", result); // interpret as a float - correct
NSLog(@"[SW] %i", result); // interpret as an int without casting - WRONG!
NSLog(@"[SW] %i", (int)result); // interpret as an int with casting - correct
sonucu verir:
bir tamsayı türüne kayan nokta değeri döküm sadece ondalık noktadan sonraki şeyler atar
2010-09-04 09:41:14.966 Test[6619:207] [SW] 43.8
2010-09-04 09:41:14.967 Test[6619:207] [SW] 0
2010-09-04 09:41:14.967 Test[6619:207] [SW] 43
Ayı akılda - yani benim örnekte 43.8 vermektedir 43'e kadar, örneğin en yakın tamsayı kullanımı math.h gelen yuvarlama işlevlerinden biri kayan nokta değeri yuvarlamak için:
#import <math.h>
... rest of code here
NSLog(@"[SW] %i", (int)round(result)); // now prints 44
, sana sıfır için böleni test etmeli miyim başlamak! –
@Mitch Wheat: Bu NaN ile sonuçlanmaz mıydı? –
ama zaten 4000, "totalCollectionAvailable 4000" olduğunu – vodkhang