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!?

È stato utile?

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%

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top