OStack程序员社区-中国程序员成长平台

标题: ios - 按国家/地区代码将 NSDecimalNumber 格式化为货币而不会丢失精度 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 11:05
标题: ios - 按国家/地区代码将 NSDecimalNumber 格式化为货币而不会丢失精度

所以现在我有以下代码:

- (NSString*)convertToLocalCurrencyFormatNSDecimalNumber*)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 作为参数,但只能处理精确到 double 值的值,使 NSDecimalNumber 没有错误和不正确的结果。

如何在不损失精度的情况下使用货币代码格式化 NSDecimalNumbers?

谢谢



Best Answer-推荐答案


尝试设置最小小数位数:

formatter.minimumFractionDigits = 2;

HTH

关于ios - 按国家/地区代码将 NSDecimalNumber 格式化为货币而不会丢失精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876181/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4