formattazione dei numeri in percentuale
-
27-09-2019 - |
Domanda
Non capisco come funziona NSNumberFormatterPercentStyle!
Esempio:
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%
Voglio semplicemente mostrare "90,5%" (rispettando NSLocal). Qual è NSNumberFormatterPercentStyle facendo con 90,5, e perché? E, come posso ottenere il mio risultato desiderato!?
Soluzione
La sua Presumendo che il numero è nel range di 0-1, in quanto è una percentuale
in modo da 0,905 si otterrebbe il 90,5%.
Altri suggerimenti
Basta impostare il moltiplicatore a 1
se i numeri sono già in percentuale.
numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMaximumFractionDigits:0];
[numberFormatter setMultiplier:@1];
La partenza di Let con le basi:
- 1 = 100%
- 1/2 = 0.5 = 50%
"percentuale" significa "di 100", quindi mezzi 12% 12/100. Non lo fai "moltiplicare per 100" per ottenere un valore percentuale, si moltiplica per 100% (che è lo stesso di moltiplicare per 1, che è lo stesso di non fare nulla).
Non usi tutti base 10 (anche se la maggior parte delle lingue "moderni" fanno), e non usi tutti 100 come denominatore. Vedi, per esempio, perMillSymbol (o kCFNumberFormatterPerMillSymbol). Non c'è formato "permill", ma è possibile che è usato automaticamente per le versioni locali che non utilizzano percentuali.
Vedere anche:. PER MILLE SIGN (‰) e su diecimila SEGNO (‱)
Non so che il linguaggio, ma in base al campione e uscita del codice, direi che la percentuale di formattazione moltiplica per 100 e poi mette il segno%, in modo che 1 diventa al 100%. Ciò che si vuole è quella di utilizzare 0,905, che dovrebbe diventare il 90,5%.
La "percentuale stile" formattatore si aspetta un certo numero di 0.905
se si vuole finire con 90.5%
. Interpreta 90.5
come fuori 1, quindi è 9050% del 1.
Risposta di Pulkit Goyal è corretta ... impostando il moltiplicatore a 1 fa '50' nel '50% '
Swift 4/5
Crea estensione NSNumber
proprio come questo
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 percentuale
let confidence = 0.68300 as NSNumber
print(confidence.getPercentage())
Output
68%