質問

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で何をしているのですか?そして、どうすれば希望の結果を得ることができますか!?

役に立ちましたか?

解決

その数は0-1の範囲であると仮定します。

したがって、0.905は90.5%を獲得します。

他のヒント

乗数をに設定するだけです 1 あなたの数字がすでに割合である場合。

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

基本から始めましょう:

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

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

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

参照:Mille Sign(‰)ごとに、1万サイン(‱)ごと。

私はその言語を知りませんが、あなたのコードのサンプルと出力に基づいて、100%になるように、パーセンテージのフォーマッタは100倍になり、%サインをつけていると思います。あなたが望むのは.905を使用することです。これは90.5%になります。

「パーセントスタイル」フォーマッターは多くのことを期待しています 0.905 あなたが終わりたいなら 90.5%. 。解釈します 90.5 1のうち、1の9050%です。

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

迅速な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%

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top