如何在iPhone应用程序中获取带有两个小数位的String

我有应用程序,其中我有方法,在数千个值中插入逗号在NSString我也想包括decimall,如果我现在输入1000然后它显示1000使用此方法但我想这样的1,000.00这是我的方法任何想法如何解决这个问题。

- (NSString *)formatStringF:(NSString *)string { // Strip out the commas that may already be here: NSString *newString = [string stringByReplacingOccurrencesOfString:@"," withString:@""]; if ([newString length] == 0) { return nil; } // Check for illegal characters NSCharacterSet *disallowedCharacters = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet]; NSRange charRange = [newString rangeOfCharacterFromSet:disallowedCharacters]; if ( charRange.location != NSNotFound) { return nil; } // Split the string into the integer and decimal portions NSArray *numberArray = [newString componentsSeparatedByString:@"."]; if ([numberArray count] > 2) { // There is more than one decimal point return nil; } // Get the integer NSString *integer = [numberArray objectAtIndex:0]; NSUInteger integerDigits = [integer length]; if (integerDigits == 0) { return nil; } // Format the integer. // You can do this by first converting to a number and then back to a string, // but I would rather keep it as a string instead of doing the double conversion. // If performance is critical, I would convert this to a C string to do the formatting. NSMutableString *formattedString = [[NSMutableString alloc] init]; if (integerDigits < 4) { [formattedString appendString:integer]; } else { // integer is 4 or more digits NSUInteger startingDigits = integerDigits % 3; if (startingDigits == 0) { startingDigits = 3; } [formattedString setString:[integer substringToIndex:startingDigits]]; for (NSUInteger index = startingDigits; index  0) { [formattedString appendString:decimal]; } } return formattedString; } 

为什么重新发明轮子? 只需使用NSNumberFormatter

 double someNumber = 1000.0; NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; // Use decimal style - this includes grouping [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // Force two decimal places [formatter setMinimumFractionDigits:2]; [formatter setMsximumFractionDigits:2]; NSString *formattedNumber = [formatter stringFromNumber:@(someNumber)]; 

这还有一个优点,它将根据用户的语言环境正确格式化数字。

它将显示为1,000.00或1.000,00或1 000,00或其他一些适合用户的格式。