NSNumberFormatter maximumFractionDigits 和 maximumSignificantDigits 错误
Posted
技术标签:
【中文标题】NSNumberFormatter maximumFractionDigits 和 maximumSignificantDigits 错误【英文标题】:NSNumberFormatter maximumFractionDigits and maximumSignificantDigits bug 【发布时间】:2014-12-25 05:03:11 【问题描述】:这是在 ios 8 上的 NSNumberForamtter
上同时使用 maximumFractionDigits
和 maximumSignificantDigits
时出现的错误吗?
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.maximumFractionDigits = 2;
formatter.maximumSignificantDigits = 3;
NSLog(@"%@", [formatter stringFromNumber:@(0.3333)]); // output 0.333 expected 0.33
如果我只使用maximumFractionDigits
,它就可以正常工作
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.maximumFractionDigits = 2;
NSLog(@"%@", [formatter stringFromNumber:@(0.3333)]); // output expected .33
【问题讨论】:
【参考方案1】:这不是错误。来自文档:
注意
当数字格式化程序配置为使用有效数字时,它会忽略用于设置整数或小数位数的任何最小值或最大值。
https://developer.apple.com/documentation/foundation/nsnumberformatter/1417793-usessignificantdigits?language=objc
注意:如果将maximumSignificantDigits
或minimumSignificantDigits
设置为任意值,则usesSignificantDigits
将自动设置为true。这与 maximumSignificantDigits
和 minimumSignificantDigits
的文档相矛盾,其中说:
您必须将 usesSignificantDigits 属性设置为 true 才能使该属性影响格式化行为。
您不需要将usesSignificantDigits
设置为true,它会将自己设置为true。
【讨论】:
以上是关于NSNumberFormatter maximumFractionDigits 和 maximumSignificantDigits 错误的主要内容,如果未能解决你的问题,请参考以下文章
NSNumberFormatter - 获取货币代码的货币符号
NSNumberFormatter、NSDecimalNumber 和科学记数法
使用 NSNumberFormatter 循环中的 Objective C 自动释放