4

NSDictionaryにセントとして格納されている金額をユーロに変換するようにNSNumberFormatterを構成しました。セントとして保存されるため、フォーマッターをに設定multiplierしました[NSNumber numberWithDouble:0.01]。ただし、304ユーロセントをユーロとして表示しようとすると、が得られ€ 3,00ます。

これは、乗数が二重除算ではなく整数除算を行っていると私に信じさせます。

NSFormatterの構成

/** 
 Returns an NSNumberFormatter that can be used to display currency in euro's (as determined in The Netherlands).
 */
+ (NSNumberFormatter *)euroCurrencyFormatter 
{
    static NSNumberFormatter *numberFormatter = nil;
    @synchronized(self) {
        if (!numberFormatter) {
            numberFormatter = [[NSNumberFormatter alloc] init];
            [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
            [numberFormatter setMultiplier:[NSNumber numberWithDouble:0.01]];
            NSLocale *nlLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"];
            [numberFormatter setLocale:nlLocale];
            [nlLocale release];
        }
    }
    return numberFormatter;
}

NSFormatterの呼び出し

cell.detailTextLabel.text = [[NSNumberFormatter euroCurrencyFormatter] stringFromNumber:[breakdown valueForKey:@"VatAmount"]]; // The VAT amount would be 304.

結果

€ 3,00

どうすれば不正な行動を止めることができますか?

4

2 に答える 2

3

このコードを試してください。

cell.detailTextLabel.text = [[NSNumberFormatter euroCurrencyFormatter] stringFromNumber:[NSNumber numberWithDouble:[[breakdown valueForKey:@"VatAmount"] doubleValue]]]; // The VAT amount would be 304.

VATを整数として渡すかのように、数値は常にint形式で取得されます。

于 2012-01-23T12:03:14.113 に答える
0

NSNumberFormatterリファレンスの「丸め動作の構成」を参照してください。

于 2012-01-23T11:36:53.300 に答える