所以现在我有以下代码:
- (NSString*)convertToLocalCurrencyFormat:(NSDecimalNumber*)result {
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.currencyCode = self.comparisonCurrency;
formatter.usesSignificantDigits = YES;
return [formatter stringFromNumber:result];
}
当我传入包含NSDecimalNumber*
的{{1}}时,它会格式化为678071967196719797153475347466.94627863
(¥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
,没有有效数字行。
我知道NSNumberFormatter可以接受任何NSNumber作为参数,但只能处理与双精度一样精确的值,使NSDecimalNumber没有错误和不正确的结果。
如何使用货币代码格式化NSDecimalNumbers而不会损失精度?
由于
答案 0 :(得分:3)
请尝试设置最小分数:
formatter.minimumFractionDigits = 2;
HTH