Pero percentComplete siempre muestra 0
¿Cómo estás mostrando percentComplete? Tenga en cuenta que es un flotador: si lo interpreta como un int sin convertirlo obtendrá el resultado incorrecto. Por ejemplo, esto:
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
Muestra esto:
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
tener en cuenta que echando un valor de punto flotante a un tipo entero simplemente descarta el material después de la coma - lo que en mi ejemplo 43.8 renders como 43. para redondear el valor de coma flotante con una precisión de uso entero una de las funciones de redondeo de math.h, por ejemplo:
#import <math.h>
... rest of code here
NSLog(@"[SW] %i", (int)round(result)); // now prints 44
para empezar, creo que deberías probar el divisor de cero! –
@Mitch Wheat: ¿No resultaría en NaN? –
pero el divisor ya es 4000, "totalCollectionAvailable es 4000" – vodkhang