NSNumberFormatter前导0和小数

有没有办法格式化一个NSNumber与前导0和小数? 例如,我需要能够写入4.5以及000.目前我有它在哪里会允许小数,但不是领先的0。

NSNumberFormatter *f = [[NSNumberFormatter alloc] init]; f.numberStyle = NSNumberFormatterNoStyle; NSString *myString = [f numberFromString:@"4.5"]; NSLog(@"myString: %@",myString); NSString *myOtherString = [f numberFromString:@"000"]; NSLog(@"myOtherString:%@",myOtherString); 

上面的输出是:'myString:4.5'和'myOtherString:0'。 我需要能够做'4.5'和'000'作为输出。

我看了苹果的“数据格式指南”没有太多的成功。

请注意, [f numberFromString:@"4.5"]返回一个NSNumber*不是NSString*

你想要这样的东西:

 NSNumberFormatter *f = [[NSNumberFormatter alloc] init]; f.numberStyle = NSNumberFormatterNoStyle; NSNumber *myNumber; NSString *myString; myNumber = [f numberFromString:@"4.5"]; [f setNumberStyle:kCFNumberFormatterDecimalStyle]; myString = [f stringFromNumber:myNumber]; NSLog(@"myString: %@",myString); myNumber = [f numberFromString:@"000"]; // Note that the extra zeros are useless [f setFormatWidth:3]; [f setPaddingCharacter:@"0"]; myString = [f stringFromNumber:myNumber]; NSLog(@"myString: %@",myString); 

NSLog输出:

myString:4.5
myString:000

如果您没有string,只需创build数字就可以:

 myNumber = [NSNumber numberWithFloat:4.5]; myNumber = [NSNumber numberWithInt:0]; 

或者只是使用标准格式:

 myString = [NSString stringWithFormat:@"%.1f", [myNumber floatValue]]; myString = [NSString stringWithFormat:@"%03d", [myNumber intValue]]; 

或者,如果您不需要NSNumber表示法,只需使用标准格式:

 myString = [NSString stringWithFormat:@"%.1f", 4.5]; myString = [NSString stringWithFormat:@"%03d", 0]; 

你可以尝试像这样:

 NSString *myString = [NSString stringWithFormat:@"%03f", [myNSNumber floatValue]]; 

这样,按照printf格式 ,将打印你的号码,至less要打印3位数字,用'0'填充任何空白区域。

这个如何作为000的主题的变化

  NSNumber *myNumber; NSString *myString =@"000" ; NSString * myStringResult; NSNumberFormatter *f = [[NSNumberFormatter alloc] init]; f.numberStyle = NSNumberFormatterNoStyle; [f setHasThousandSeparators:FALSE]; //-- remove seperator [f setMinimumIntegerDigits:[myString length ]]; //-- set minimum number of digits to display using the string length. myNumber = [f numberFromString:myString]; myStringResult = [f stringFromNumber:myNumber]; NSLog(@"myStringResult: %@",myStringResult); 

由于这是经常被问及苹果的文档吸引,这是人们将要寻找的答案。 以下链接有两个解决scheme。 一个使用NSString stringWithFormat:另一个使用NSNumberFormatter

https://stackoverflow.com/a/11131497/1058199