Question

Je ne comprends pas comment fonctionne NSNumberFormatterPercentStyle!

Exemple:

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%

Je veux simplement montrer "90,5%" (dans le respect NSLocal). Qu'est-ce NSNumberFormatterPercentStyle faire avec 90,5, et pourquoi? Et, comment puis-je obtenir mon résultat désiré!

Était-ce utile?

La solution

Son présumant que le nombre est dans la plage de 0-1, car il est un pour cent

0,905 vous obtiendrait 90,5%.

Autres conseils

Il suffit de régler le multiplicateur à 1 si vos chiffres sont déjà en pourcentage.

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

Commençons Let avec les bases:

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

"pourcentage" signifie "sur 100", de sorte que 12% des moyens 12/100. Vous ne le faites pas « multiplier par 100 » pour obtenir une valeur de pourcentage, vous multipliez par 100% (ce qui est le même que la multiplication par 1, qui est le même que ne rien faire).

utilisations non tout le monde base 10 (bien que la plupart des langues « modernes » font), et pas tout le monde utilise 100 comme dénominateur. Voir, par exemple, perMillSymbol (ou kCFNumberFormatterPerMillSymbol). Il n'y a pas le format « permill », mais il est possible qu'il est utilisé automatiquement pour les locales qui n'utilisent pas des pourcentages.

Voir aussi:. MILLE PAR SIGN (‰) et SIGNE PAR DIX MILLE (‱)

Je ne sais pas ce langage, mais en fonction de votre exemple de code et de sortie, je suppose que le pourcentage formatter multiplie par 100 et met ensuite le signe% sur de sorte que 1 devient 100%. Ce que vous voulez est d'utiliser 0,905, qui devrait être de 90,5%.

Le formatter « pour cent de style » prévoit un certain nombre de 0.905 si vous voulez finir avec 90.5%. Il interprète 90.5 comme sur 1, il est donc 9050% 1.

Réponse de Pulkit Goyal est correct ... réglage du multiplicateur 1 marques '50' en '50% '

Swift 4/5

Créer une extension NSNumber comme ça

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 pourcentage

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

Sortie

68%

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top