2

NSNumberからマネースタイルの文字列を作成するメソッドがあります。

+ (NSString *)formatShortPayment: (NSNumber *)payment {

    if (![payment isEqual: [NSNull null]]) {

        // Set locale to GB
        NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
        NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
        [formatter setLocale: locale];
        [formatter setNumberStyle: NSNumberFormatterCurrencyStyle];

        // If the payment is 1000 or over, get rid of fraction numbers
        if ([payment doubleValue] >= 1000.0) {
            [formatter setMaximumFractionDigits: 0];
            payment = [NSNumber numberWithFloat:([payment floatValue] / 1000)];
        }

        else {
            // Here's where I want to check if the value ends with .00 or not
        }

        // Return clean number
        return [formatter stringFromNumber: payment];

    }

    return nil;
}

これはうまく機能しますが、値が1000.0未満の場合は、末尾の数字が何であるかを確認し、.00に等しい場合は削除します。

例:25.00 => 25 13.29 => 13.29

これを達成するための最善の方法がわかりません。助言がありますか?

4

1 に答える 1

10
if (([payment doubleValue] - floor([payment doubleValue]) < 0.01) {
    [formatter setMaximumFractionDigits: 0];
}

これはうまくいくはずです。

于 2012-11-25T15:37:47.163 に答える