iphone SDKのNSDecimalNumberHandlerでNSNumberFormatterを使用して
-
12-09-2019 - |
質問
非常に大きく、正確な数値をフォーマットする簡単なテストとして、私がやってます:
(number is a synthesized NSDecimalNumber...) number = [[NSDecimalNumber alloc] initWithDecimal:[[NSDecimalNumber numberWithDouble:420000008698643507200000.0F] decimalValue]]; DLog(@"unformatted: %@", [number stringValue]);
私を与える: "未フォーマット:420000008698643507200000"
私はNSNumberFormatter
を経由して、それをフォーマットしようとすると、それはかなり離れ...丸めアップの方法か何かだ...
numFormatter = [[NSNumberFormatter alloc] init]; [numFormatter setNumberStyle:kCFNumberFormatterDecimalStyle]; [numFormatter setRoundingMode:kCFNumberFormatterRoundDown]; [numFormatter setMaximum:nil]; DLog(@"formatted: %@", [numFormatter stringFromNumber:number]);
は私を与える: "書式設定:420,000,008,698,644,000,000,000"
私は見ていないよ、いくつかの秘密NSNumberFormatter
魔法のプロパティがあります望んでいるが、私はsetUsesSignificantDigits
とsetMaximumSignificantDigits
を試してみましたが、それは動作していないようでした。
誰もが任意のアイデアがありますか?おかげでたくさん!
解決
精度のあなたの損失はNSNumberFormatter
が数値をdoubleに変換しているという事実から来ています。
あなたはNSDecimalNumber's descriptionWithLocale:
メソッドを使用して考えがありますか?出発点として、あなたはただのparamとして[NSLocale currentLocale]
に渡すことができます。そして、あなたはNSLocaleDecimalSeparator
とNSLocaleGroupingSeparator
を経由して、ロケール設定で再生を開始することができます。
所属していません StackOverflow