Я настроил NSNumberFormatter для преобразования сумм, которые хранятся в виде центов в NSDictionary в евро. Поскольку они хранятся в виде центов, я установил 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
Как я могу остановить ошибочное поведение?