NSNumberformatter 将零添加到小数部分
Posted
技术标签:
【中文标题】NSNumberformatter 将零添加到小数部分【英文标题】:NSNumberformatter add zeros to decimal part 【发布时间】:2018-07-04 22:15:18 【问题描述】:我正在寻找一种显示以下内容的方法:
"20000.5" => "20,000.50" "20000" => "20,000.00"所以基本上总是两位小数,如果只有一位小数,则在小数部分添加一个额外的零
最好的方法是什么?我知道我可以使用 NSNumberformatter 但我不断得到“20000.9”=>“20,000.9”而不是“20000.9”=>“20,000.90”
下面是我的代码,但它不起作用。
NSNumberFormatter *numberFormatter2 = [[NSNumberFormatter alloc] init];
[numberFormatter2 setGroupingSeparator:@","];
[numberFormatter2 setGroupingSize:3];
[numberFormatter2 setUsesGroupingSeparator:YES];
[numberFormatter2 setDecimalSeparator:@"."];
[numberFormatter2 setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter2 setMaximumFractionDigits:2];
NSString *theString = [numberFormatter2 stringFromNumber:[NSNumber numberWithDouble:1008977.2]];
NSLog(@"Number is: %@", theString);
---Number is: 1,008,977.2
我希望它是 1,008,977.20
【问题讨论】:
你看过 NSNumberFormatter 的文档了吗?你写了什么代码?你把minimumFractionDigits
设置成什么了?
我将它设置为 2 但它不起作用。
您已设置“最大”小数位数。不是最低限度。
仅供参考 - 你会让世界各地的许多用户对你的数字格式感到困惑。许多人期望的格式与您在这里强制的格式不同。避免设置特定的分组和小数分隔符。避免设置特定的分组大小。您唯一应该设置的是小数位数的最小和最大数量。
是的,非常感谢!
【参考方案1】:
您只需要添加:
[numberFormatter2 setMinimumFractionDigits:2];
这将提供您想要的输出。
但请删除以下行:
[numberFormatter2 setGroupingSeparator:@","];
[numberFormatter2 setGroupingSize:3];
[numberFormatter2 setDecimalSeparator:@"."];
这种固定格式会让您的许多用户感到困惑。
【讨论】:
【参考方案2】:你下面的代码是错误的
[numberFormatter2 setMaximumFractionDigits:2];
将代码更改为以下示例
[numberFormatter2 setMinimumFractionDigits:2];
这意味着您的输出结果可以包含两个以上的十进制数字。
【讨论】:
以上是关于NSNumberformatter 将零添加到小数部分的主要内容,如果未能解决你的问题,请参考以下文章
NSNumberFormatter 适用于小数分隔符但不适用于逗号分隔符
使用 NSNumberFormatter 生成小数点后尾随零的数字
带有数字样式的 NSNumberFormatter NSNumberFormatterCurrencyStyle 逗号问题