23

NSNumberFormatterPercentStyleがどのように機能するのかわかりません!

例:

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%

単に「90.5%」(NSLocalを尊重)を表示したいだけです。NSNumberFormatterPercentStyleは90.5で何をしているのですか、そしてその理由は何ですか?そして、どうすれば希望の結果を得ることができますか?

4

7 に答える 7

66

1数値がすでにパーセンテージになっている場合は、乗数をに設定するだけです。

numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMaximumFractionDigits:0];
[numberFormatter setMultiplier:@1];
于 2013-09-04T19:59:54.847 に答える
27

パーセントであるため、数値は0〜1の範囲にあると推定されます。

したがって、0.905では90.5%になります。

于 2010-08-11T15:57:56.020 に答える
4

基本から始めましょう:

  • 1 = 100%
  • 1/2 = 0.5 = 50%

「パーセント」は「100のうち」を意味するため、12%は12/100を意味します。パーセンテージ値を取得するために「100を掛ける」のではなく、100%を掛けます(これは1を掛けるのと同じで、何もしないのと同じです)。

誰もがベース10を使用しているわけではなく(ほとんどの「現代」言語は使用していますが)、すべての人が分母として100を使用しているわけではありません。たとえば、perMillSymbol(またはkCFNumberFormatterPerMillSymbol)を参照してください。「パーミル」形式はありませんが、パーセンテージを使用しないロケールで自動的に使用される可能性があります。

参照:パーミル記号(‰)およびパーミル記号(‱)。

于 2010-08-11T16:39:40.197 に答える
3

その言語はわかりませんが、コードのサンプルと出力に基づいて、パーセンテージフォーマッターに100を掛けてから、1が100%になるように%記号を付けていると思います。必要なのは.905を使用することです。これは90.5%になるはずです。

于 2010-08-11T15:58:05.357 に答える
3

スウィフト4/5

NSNumberこのように拡張機能を作成します

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)!
    }
}

パーセンテージを取得する

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

出力

68%

于 2019-09-11T06:42:29.230 に答える
2

「パーセントスタイル」フォーマッタは、最終的に。0.905で終わる場合、いくつかの数を期待し90.5%ます。1からと解釈90.5されるため、1の9050%になります。

于 2010-08-11T15:58:17.307 に答える
0

Pulkit Goyalの答えは正しいです...乗数を1に設定すると、「50」が「50%」になります

于 2014-12-29T22:40:14.620 に答える