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]; 
} 

當我傳遞一個包含678071967196719797153475347466.94627863NSDecimalNumber*,它被格式化爲¥678,072,000,000,000,000,000,000,000,000(與currencyCode設置爲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

這工作就像一個魅力,謝謝! –