1

私は2つの通貨価値を持っています:£2.60と£22,000。どちらもCoreDataと同じようNSDecimalNumberに保存されます。以下を使用して、それらから文字列を作成します。

    // The app will be GB only, which is the reason locale is set to en_GB
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setLocale: locale];
    [formatter setNumberStyle: NSNumberFormatterCurrencyStyle];

    // job is a Core Data entity, value1 and value2 or NSDecimalNumbers
    NSString *value1 = [formatter stringFromNumber: [job value1]]; // 2.60
    NSString *value2 = [formatter stringFromNumber: [job value2]];    // 22000
    NSString *testString = [NSString stringWithFormat:@"%@ and %@", value1, value2];

これは全体としては問題なく機能しますがtestString、£2.60および£22,000.00として印刷されます。

[formatter setMaximumFractionDigits: 0];largeValueのみを実装するための最良の方法は何でしょうか?

4

1 に答える 1

2

答えはフォーマット要件によって異なりますが、数値に千の位の区切り記号が表示されている場合は、10進数を切り落とすのが適切なヒューリスティックだと思います。

if ([[job value2] doubleValue] >= 1000.0) {
    [formatter setMaximumFractionDigits: 0];
}
于 2012-09-02T15:34:10.040 に答える