我在字符串中有一个浮点数,我需要在数字的每三位数字上添加逗号。
这是我尝试过的,
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
。我应该在代码中更改什么?
答案 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]);