使用 NSNumberFormatter 将数字转换为格式

Posted

技术标签:

【中文标题】使用 NSNumberFormatter 将数字转换为格式【英文标题】:Converting number to format with NSNumberFormatter 【发布时间】:2014-11-27 10:40:48 【问题描述】:

如何使用 NSNumberFormatter 将 4273095782 等数字转换为数字 4 273 095 782?

我用了这个二极管,但没有得到它

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = kCFNumberFormatterDecimalStyle;
formatter.maximumIntegerDigits = 3;
formatter.minimumFractionDigits = 3;
formatter.groupingSeparator = @" ";
formatter.decimalSeparator = @" ";
NSString *formattedNumber = [formatter stringFromNumber:p];

【问题讨论】:

有了formatter.groupingSeparator = @" ";[formatter setGroupingSize:3];,它应该可以解决问题。 注释掉整数位数的限制...这样就可以了:) @Larme:不,仅此而已……他也需要使用setSecondaryGroupingSize:3。看我的回答。 【参考方案1】:

您需要使用两个属性:setGroupingSize: 用于最后 3 位,setSecondaryGroupingSize: 用于所有其他数字:

完整的实现是这样的:

NSInteger integer = 4273095782;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSize:3];
[formatter setSecondaryGroupingSize:3];
[formatter setGroupingSeparator:@" "];
NSString * threeSeparated =  [formatter stringFromNumber:@(integer)];
NSLog(@"threeSeparated: %@", threeSeparated);

输出:4 273 095 782

【讨论】:

【参考方案2】:

试试这个小操作:

NSNumber *p = [NSNumber numberWithInt:123456789];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = kCFNumberFormatterDecimalStyle;
//     formatter.maximumIntegerDigits = 10;
//     formatter.minimumFractionDigits = 3;
formatter.groupingSeparator = @" ";
formatter.decimalSeparator = @" ";
NSString *formattedNumber = [formatter stringFromNumber:p];

NSLog(@"Formatted:%@", formattedNumber);

希望这对您有所帮助。在这种情况下,您不需要限制整数位数:)

结果应该是:2014-11-27 11:49:39.855 NSNumberFormatter[2399:789883] Formatted:123 456 789

【讨论】:

你显示的输出并没有出现在我的 Xcode6 中 @AnoopVaidya 对这个巨大的数字使用 long 也适用于我的代码。

以上是关于使用 NSNumberFormatter 将数字转换为格式的主要内容,如果未能解决你的问题,请参考以下文章

iOS 从 NSNumberFormatter 字符串中取回值

使用 NSNumberFormatter 循环中的 Objective C 自动释放

NSNumberFormatter 将浮点字符串格式化为整数

具有有效数字的 NSNumberFormatter 错误地格式化 0.0

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

NSNumberFormatter 在负值上显示括号[重复]