在浮动格式的数字中每隔三位数添加逗号

时间:2014-03-21 06:11:21

标签: ios objective-c floating-point nsstring nsnumberformatter

我在字符串中有一个浮点数,我需要在数字的每三位数字上添加逗号。

这是我尝试过的,

NSString *mystring =@"20090809.99";
float fl = [mystring floatValue];
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSLog(@"%@ ", [formatter stringFromNumber:[NSNumber numberWithFloat:fl]]);

我需要结果为20,090,809.99。我应该在代码中更改什么?

4 个答案:

答案 0 :(得分:2)

使用此代码执行此任务: -

    NSNumberFormatter *formatter1 = [[NSNumberFormatter alloc] init];
    [formatter1 setNumberStyle:NSNumberFormatterDecimalStyle];
    NSString * formattedAmount2 = [formatter1 stringFromNumber: @20090809.99];
    NSLog(@"%@",formattedAmount2);

它的输出是: -

<强> 20,090,809.99

答案 1 :(得分:2)

没有数字格式化程序:

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

答案 2 :(得分:1)

您的格式代码是正确的。问题是您的号码是float类型。类型float的精度有限。您的号码无法由float准确表示。最接近float的{​​{1}}值为20090809.99。这就是20090810.00返回的内容,这就是打印出来的内容。

如果您将变量更改为键入-floatValue,并调用double-[NSString doubleValue],那么它将按预期运行。

答案 3 :(得分:1)

这个怎么样:

NSString *mystring =@"20090809.99";
NSNumber *number = [NSDecimalNumber decimalNumberWithString:mystring];    
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSLog(@"Formatted float: %@ ", [formatter stringFromNumber:number]);