Pregunta

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). ¿Cuál es NSNumberFormatterPercentStyle haciendo con 90.5, y por qué? Y, ¿cómo puedo conseguir el resultado deseado!?

¿Fue útil?

Solución

Su suponiendo que el número está en el intervalo de 0-1, ya que es un por ciento

0,905 por lo que le conseguiría el 90,5%.

Otros consejos

Sólo tienes que configurar el multiplicador a 1 si sus números ya están en porcentaje.

numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMaximumFractionDigits:0];
[numberFormatter setMultiplier:@1];

Empecemos por lo básico:

  • 1 = 100%
  • 1/2 = 0,5 = 50%

"porcentaje" significa "de 100", por lo que los medios 12% 12/100. No lo hace "multiplicar por 100" para obtener un valor de porcentaje, que se multiplica por 100% (que es lo mismo que multiplicar por 1, lo que es lo mismo que no hacer nada).

No todo el mundo utiliza la base 10 (aunque la mayoría de los idiomas "modernos" hacen), y no todo el mundo utiliza 100 como denominador. Véase, por ejemplo, perMillSymbol (o kCFNumberFormatterPerMillSymbol). No hay formato "permill", pero es posible que se utiliza automáticamente para lugares que no utilizan porcentajes.

Ver también:. SIGN por mil (‰) y firmar cada diez mil (?)

No sé que el lenguaje, pero en base a la muestra de código y de salida, me imagino que el porcentaje formateador multiplica por 100 y luego se pone el signo% de manera que 1 se convierte en 100%. Lo que se quiere es utilizar 0.905, que debería convertirse en un 90,5%.

El "estilo por ciento" formateador espera un número de 0.905 si quiere terminar con 90.5%. Se interpreta como 90.5 de 1, por lo que es de 9050% 1.

Respuesta de Pulkit Goyal es correcta ... establecer el multiplicador de 1 marcas '50' en '50% '

Swift 4/5

Crea extensión NSNumber al igual que este

extension NSNumber {
    func getPercentage() -> String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .percent
        formatter.maximumFractionDigits = 0 // You can set what you want
        return formatter.string(from: self)!
    }
}

Get porcentaje

let confidence = 0.68300 as NSNumber
print(confidence.getPercentage())

salida

68%

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top