如何在Objective C中为每3位数字添加逗号?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Objective C中为每3位数字添加逗号?相关的知识,希望对你有一定的参考价值。

如果我有一个数字int aNum = 2000000我如何格式化,以便我可以显示为NSString 2,000,000?

答案

不要做自己的数字格式。您几乎肯定不会正确处理所有边缘情况或正确处理所有可能的区域设置。使用NSNumberFormatter将数值数据格式化为本地化的字符串表示形式。

你可以使用NSNumberFormatter实例方法-setGroupingSeparator:将分组分隔符设置为@","(或者更好的是[[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];感谢@ntesler)和-setGroupingSize:将每3个数字放置一个分组分隔符。

另一答案

使用NSNumberFormatter

特别:

NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // this line is important!

NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithInteger:2000000]];

[formatter release];

默认情况下,NSNumberFormatter使用当前语言环境,因此默认情况下将分组分隔符设置为正确的值。关键是要记住设置数字样式。

另一答案

有一个static method on NSNumberFormatter可以满足您的需求:

int aNum = 2000000;
NSString *display = [NSNumberFormatter localizedStringFromNumber:@(aNum)
                                                     numberStyle:NSNumberFormatterDecimalStyle];

如果您不需要对格式化程序进行任何其他配置,这种方式比创建新的NSNumberFormatter更简洁。

另一答案

更简单:

NSNumber *someNumber = @(1234567890);
NSString *modelNumberString = [NSString localizedStringWithFormat:@"%@", someNumber];
NSLog(@"Number with commas: %@", modelNumberString);

同事今天刚刚教我这个。 #惊人

另一答案

想一想,因为我会在这篇文章中寻找样本。因此,如果您正在使用数字,请注意下一个参数:

setNumberStyle:NSNumberFormatterCurrencyStyle // if you are working with currency

它也可以

setNumberStyle:NSNumberFormatterDecimalStyle

所有代码均为For ARC。

如果您正在使用Integer并且需要获得诸如200,000的结果

int value = 200000;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSString * newString =  [formatter stringFromNumber:[NSNumber numberWithInteger:value]];

如果您正在使用Float并且需要获得诸如200,000.00的结果

float value = 200000;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2]; // Set this if you need 2 digits
NSString * newString =  [formatter stringFromNumber:[NSNumber numberWithFloat:value]];

编辑

要有能力使用不同的数字分隔符使用NSLocale。添加到代码中,在区域设置标识符上指定NSLocale

[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"]];

或使用当前本地:

[formatter setLocale:[NSLocale currentLocale]];
另一答案

Swift版本

let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.maximumFractionDigits = decimalPlaces
let result = formatter.stringFromNumber(NSNumber(double: 8.0))

通过http://ios.eezytutorials.com

另一答案

一个简单的解决方案就是这样。我的回答几乎与@ Nazir的答案相同,但是有一个小技巧。

double current_balance = 2000000.00;

NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
//[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];  //if you want for currency with $ sign
[formatter setMinimumFractionDigits:2]; // Set this if you need 2 digits
[formatter setMaximumFractionDigits:2]; // Set this if you need 2 digits
NSString * currency_format =  [NSString stringWithFormat:@"%@", [formatter stringFromNumber:[NSNumber numberWithDouble:current_balance]]];
另一答案

对于Swift 4.0

let formatter = NumberFormatter()

formatter.numberStyle = .decimal

formatter.minimumFractionDigits = 2

formatter.maximumFractionDigits = 2

let result = formatter.string(from: NSNumber(value: 123456))

以上是关于如何在Objective C中为每3位数字添加逗号?的主要内容,如果未能解决你的问题,请参考以下文章

在 Javascript 中为数字添加逗号

表格会自行添加逗号

如何在 PLOTLY JS 中为每个子图添加标题

Google表格十进制数,如何删除逗号并添加零

如何在 ggplot2 boxplot 中为每组添加多个观察值并使用组平均值?

excel中如何将两列数字并入一列,中间用逗号隔开?