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 用于 2 个小数位

使用 NSNumberFormatter 生成小数点后尾随零的数字

将零添加到列表中

带有数字样式的 NSNumberFormatter NSNumberFormatterCurrencyStyle 逗号问题

在R中的小数位前添加零