ios - Número de formato como porcentaje
iphone percentage (6)
El formateador de "estilo porcentual" espera un número de 0.905
si desea terminar con un 90.5%
. Interpreta 90.5
como de 1, por lo que es 9050% de 1.
¡No entiendo cómo funciona NSNumberFormatterPercentStyle!
Ejemplo:
NSNumber *number = [NSNumber numberWithFloat:90.5];
NSNumberFormatter *percentageFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[percentageFormatter setNumberStyle:NSNumberFormatterPercentStyle];
NSString *strNumber = [percentageFormatter stringFromNumber:numbericString];
NSLog (strNumber); // Output: 9,050%
Simplemente quiero mostrar "90.5%" (respetando NSLocal). ¿Qué hace NSNumberFormatterPercentStyle con 90.5 y por qué? Y, ¿cómo puedo obtener mi resultado deseado?
Empecemos con lo básico:
- 1 = 100%
- 1/2 = 0.5 = 50%
"Porcentaje" significa "de 100", por lo que 12% significa 12/100. No se "multiplica por 100" para obtener un valor porcentual, se multiplica por 100% (lo que equivale a multiplicar por 1, lo que equivale a no hacer nada).
No todos usan la base 10 (aunque la mayoría de los lenguajes "modernos") y no todos usan 100 como denominador. Ver, por ejemplo, perMillSymbol (o kCFNumberFormatterPerMillSymbol). No hay un formato "permill", pero es posible que se use automáticamente para locales que no usan porcentajes.
Consulte también: POR MILLE SIGN () Y POR DIEZ MIL SIGNO (‱).
La respuesta de Pulkit Goyal es correcta ... establecer el multiplicador en 1 hace que ''50'' sea ''50% ''
No conozco ese idioma, pero según el ejemplo y el resultado de su código, supongo que el formateador de porcentajes se multiplica por 100 y luego coloca el% de inicio de sesión para que 1 se convierta en 100%. Lo que quieres es usar .905, que debería convertirse en 90.5%.
Se supone que el número está en el rango de 0-1, ya que es un porcentaje
entonces 0.905 te daría 90.5%.
Solo establece el multiplicador a 1
si tus números ya están en porcentaje.
numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMaximumFractionDigits:0];
[numberFormatter setMultiplier:@1];