将逗号添加到浮点数或字符串?
Posted
技术标签:
【中文标题】将逗号添加到浮点数或字符串?【英文标题】:Adding Commas to Float or String? 【发布时间】:2013-11-11 23:13:58 【问题描述】:我一直在尝试找到一种将逗号附加到字符串或浮点数的方法。我有一个浮点数,它可以是 10.50 到 50000000000.99 之间的任何值,并且希望能够对其进行格式化以在每 3 位数字中添加逗号(不包括浮点数)。我知道有一个 NSNumberFormatter 可以使用 NSNumberFormatterDecimalStyle 或 NSNumberFormatterCurrencyStyle 但它们都不适用于字符串/浮点数。我曾尝试将浮点数拆分为两个字符串,然后尝试进行长度百分比 == 3 的计算,但它开始变得非常混乱。我在 Java 中做了类似的事情,但在 ios 中似乎要困难得多。
如果有人有任何建议或想法?任何信息或指导表示赞赏!提前致谢。
编辑:我知道那里有帖子,但似乎没有一个可以解决以零结尾的双精度数/浮点数/字符串的问题。例如,如果我有一个双精度为 16.00,格式化程序会将其格式化为 16。对于 1234.80 也是如此。格式化程序会将其格式化为 1,234.8 而不是 1,234.80,这就是我正在寻找的。
【问题讨论】:
请看***.com/a/1853949/442328 comma separated thousand NSString stringWithFormat的可能重复NSNumberFormatter
是您所需要的。它确实适用于float
,但您需要先将float
包装在NSNumber
中。对于字符串,先转换为double
,再转换为NSNumber
。
@KDaker 我知道那里有帖子,但似乎都没有解决以零结尾的双精度/浮点数/字符串的问题。例如,如果我有一个双精度为 16.00,格式化程序会将其格式化为 16。对于 1234.80 也是如此。格式化程序会将其格式化为 1,234.8 而不是 1,234.80,这就是我要寻找的。span>
@rmaddy 我之前尝试过 NSNumberFormatter,但它似乎没有正确转换以零结尾的小数。你知道什么可以解决这个问题吗?
【参考方案1】:
在 NSNumberFormatting here 上查看此帖子
它的要点是将浮点数或双精度数转换为 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'
试一试,您可以应用许多不同的格式设置。
【讨论】:
格式化程序似乎无法识别结尾的零,即 11.00、123.80、1,342.20 都打印出来没有零。 您可以在格式化程序上设置“minimumFractionDigits”属性。这允许您强制显示小数位数的最小值(或通过另一个属性的最大值)。十进制数字也存在类似的属性。有关示例,请参见链接。【参考方案2】:Read Apple's guide to formatting numbers, NSNumberFormatter
支持千位分隔符和小数部分。例如,参见参考文档中的清单 1。
【讨论】:
以上是关于将逗号添加到浮点数或字符串?的主要内容,如果未能解决你的问题,请参考以下文章
Python Ctypes,C++ 字符串到浮点数的转换在 python 中调用 Matplotlib 后给出错误/舍入的结果