1

Так прямо сейчас я следующий код:Формат NSDecimalNumber в валюте код страны без потери точности

- (NSString*)convertToLocalCurrencyFormat:(NSDecimalNumber*)result { 
    NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init]; 
    formatter.numberStyle = NSNumberFormatterCurrencyStyle; 
    formatter.currencyCode = self.comparisonCurrency; 
    formatter.usesSignificantDigits = YES; 
    return [formatter stringFromNumber:result]; 
} 

Когда я прохожу в NSDecimalNumber*, содержащей 678071967196719797153475347466.94627863, он получает отформатирован ¥678,072,000,000,000,000,000,000,000,000currencyCode установлен на JPY). Если я не буду оставлять строку formatter.usesSignificantDigits = YES, она будет отформатирована до ¥678,071,967,196,719,797,153,475,347,467, ближе, но все равно отбрасывая десятичные и следующие значения.

Однако, когда я прохожу в 6780.0416000000012517376, он отформатирован правильно к ¥6,780.04 со значительной цифрой линии. Он отформатирован до ¥6,780 без строки значимых цифр.

Я знаю, что NSNumberFormatter может принимать любой NSNumber в качестве параметра, но может иметь дело только со значениями, точными как удваивает, оставив NSDecimalNumber без ошибок и неправильных результатов.

Как я могу отформатировать NSDecimalNumbers с кодами валют без потери точности?

Благодаря

ответ

2

Попробуйте установить минимальную дробную цифру вместо:

formatter.minimumFractionDigits = 2; 

HTH

+0

, который работал как шарм, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^