将逗号添加到Float或String?

时间:2013-11-11 23:13:59

标签: ios cocoa-touch formatting nsnumberformatter

我一直试图找到一种方法来找到将逗号附加到字符串或浮点数的方法。我有一个浮点数,可以是10.50到50000000000.99之间的任何东西,并且希望能够格式化这个以便为每3个数字添加逗号(不包括浮点数)。我知道有一个NSNumberFormatter可以使用NSNumberFormatterDecimalStyle或NSNumberFormatterCurrencyStyle,但这些都不能用于字符串/浮点数。我试图将浮动分成两个字符串,然后尝试进行长度= = 3的计算,但它开始变得非常混乱。我在Java中做了类似的事情,但在iOS中似乎要难得多。

如果有人有任何建议或想法?任何信息或指导表示赞赏!提前致谢。

编辑:我知道那里有帖子但是它们似乎都没有解决以双尾/浮点数/字符串结尾的问题。例如,如果我有一个16.00的double,格式化程序将格式化为16.同样的事情是1234.80。格式化程序将其格式化为1,234.8而不是1,234.80,这就是我要寻找的。

2 个答案:

答案 0 :(得分:3)

在NSNumberFormatting here

上查看此帖子

它的要点是将float或double转换为NSNumber,然后使用NSNumber上的NSNumberFormatter获取具有所需格式的NSString。类似的东西:

double doubleNum = 1000.002;

// Change double to nsnumber:
NSNumber *num = [NSNumber numberWithDouble:doubleNum];

// Set up the formatter:
NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
[numFormatter setUsesGroupingSeporator:YES];
[numFormatter setGroupingSeparator:@","];
[numFormatter setGroupingSize:3];

// Get the formatted string:
NSString *stringNum = [numFormatter stringFromNumber:num];

NSLog(@"%@",stringNum);
// prints out '1,000.002'

试一试,您可以应用许多不同的格式设置。

答案 1 :(得分:0)

阅读Apple's guide to formatting numbersNSNumberFormatter支持千位分隔符和小数部分。例如,参见参考文档中的清单1。