NSNumberformatter在小数部分加零

时间:2018-07-04 22:15:19

标签: objective-c number-formatting

我正在寻找一种显示以下内容的方法:

  • “ 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

2 个答案:

答案 0 :(得分:0)

您需要添加的所有内容是:

[numberFormatter2 setMinimumFractionDigits:2];

这将提供您想要的输出。

但是请删除以下几行:

[numberFormatter2 setGroupingSeparator:@","];
[numberFormatter2 setGroupingSize:3];
[numberFormatter2 setDecimalSeparator:@"."];

这种固定格式会迷惑您的许多用户。

答案 1 :(得分:-1)

您的以下代码错误

[numberFormatter2 setMaximumFractionDigits:2];

将代码更改为以下示例

[numberFormatter2 setMinimumFractionDigits:2];

这意味着您的输出结果可以包含两个以上的十进制数字。