Estoy usando la siguiente pieza del código Objective-C para formatear un NSNumber, y funciona bien la mayor parte del tiempo, pero no hace exactamente lo que quiero cuando el objeto NSNumber contiene un entero (sin parte fraccionaria) .¿Cómo especificar lugares decimales al formatear objetos NSNumber?
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(80.0f, 90.0f, 225.0f, 40.0f)];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setFormat:@"###.##"];
int bytes = 1024 * 1024;
NSNumber *total = [NSNumber numberWithFloat:([self.totalFileSize floatValue]/bytes)];
label.text = [NSString stringWithFormat:@"0.00 MB of %@ MB", [formatter stringFromNumber:total]];
Así por ejemplo, si self.totalFileSize
sostiene 55.2300, se mostrará "55.23" como debe ser en mi UILabel
. Pero si esa misma variable tiene 55, simplemente mostrará "55" en la etiqueta.
Lo que realmente quiero es que este código siempre incluya los 2 decimales en la salida.
¿Cómo puedo lograr eso?
setFormat: no está disponible para iOS (podría funcionar en el simulador, pero no en el dispositivo). Necesita usar setPositiveFormat: y setNegativeFormat: –
en iOS necesita usar 'setMinimumFractionDigits:' y/o - 'setMaximumFractionDigits:' – Laszlo