使用 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 逗号问题