所以現在虧我有以下代碼:格式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.94627863
的NSDecimalNumber*
,它被格式化爲¥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而不損失精度?
感謝
這工作就像一個魅力,謝謝! –