将逗号添加到浮点数或字符串?

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中的argv

有理数到浮点数

Python Ctypes,C++ 字符串到浮点数的转换在 python 中调用 Matplotlib 后给出错误/舍入的结果

MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数

在 Python 中将 numberDecimal 值投影到浮点数中