NSNumberFormatter 千位分隔符和尾随零

Posted

技术标签:

【中文标题】NSNumberFormatter 千位分隔符和尾随零【英文标题】:NSNumberFormatter thousand separator and trailing zeros 【发布时间】:2014-08-22 09:09:02 【问题描述】:

我的帐户数组中有一个值为 8500.00 的对象。我想将其显示为 8,500.00,但是当我尝试这样做并打印到控制台时,它返回 null。有什么想法吗?

应用代理

NSArray *balance        = [[NSArray alloc] initWithObjects:@"120.50", @"8500.00", nil];

// 视图控制器

// Setup number formatter
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSNumber *balance = [[appDelegate.accounts objectForKey:@"Available Balance"] objectAtIndex:indexPath.row];
NSLog(@"%@", balance); // Prints 8500.00

NSLog(@"%@", [formatter stringFromNumber:balance]); // Prints null

【问题讨论】:

向我们展示您如何将对象添加到accounts。我假设它们不是 NSNumber 实例。 NSNumber *balance = [NSNumber numberWithFloat:8500.00];线对我很有效。 vikingosegundo 是对的,请检查 NSNumber 实例。 我已经更新了我的问题 // 设置数字格式化程序 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [格式化程序 setNumberStyle:NSNumberFormatterDecimalStyle]; NSNumber *balance = [NSNumber numberWithFloat:[[[appDelegate.accounts objectForKey:@"可用余额"] objectAtIndex:indexPath.row] floatvalue]]; NSLog(@"%@", 余额); // 打印 8500.00 NSLog(@"%@", [formatter stringFromNumber:balance]); // 打印 null @VinayBagale 如果您确实需要将代码粘贴到 cmets 中,请使用 paste.org 【参考方案1】:

数组余额是NSString NOT NSNumbers 的数组。这就是 stringFromNumber: 方法返回 nil 的原因。

以下示例运行良好:

NSArray *balanceArr =@[@(120.50), @(8500.00)];
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMinimumFractionDigits:2];
[formatter setGroupingSize:3];
[formatter setGroupingSeparator:@"'"];
for (NSNumber *balance in balanceArr) 
    NSLog(@"Straight printing: %@", balance);
    NSLog(@"NumberFormatter: %@", [formatter stringFromNumber:balance]);

输出:

2014-08-22 12:18:16.669 dsghdtu[5343:60b] Straight printing: 120.5
2014-08-22 12:18:16.671 dsghdtu[5343:60b] NumberFormatter: 120.50
2014-08-22 12:18:16.671 dsghdtu[5343:60b] Straight printing: 8500
2014-08-22 12:18:16.672 dsghdtu[5343:60b] NumberFormatter: 8'500.00

【讨论】:

我希望它打印 120.50 这不是什么大问题。请看我修改后的答案(你也可以使用 NSNumberFormatterCurrencyStyle 来设置 fractionDigits)

以上是关于NSNumberFormatter 千位分隔符和尾随零的主要内容,如果未能解决你的问题,请参考以下文章

NSNumberFormatter 适用于小数分隔符但不适用于逗号分隔符

写一个js函数,添加千位分隔符

用js实现千位分隔符,怎么实现

win10自带计算器怎么关闭千位分隔符

JS从入门到放弃,千位分隔符

如何显示或隐藏数字中的千位分隔符