注意[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
如果你没有字符串,只需创建numbe即可[R这样的:
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];
你知道,我想我们正在回答这个错误。我们正在接受一个字符串并将其转换为一个数字,然后返回到一个字符串?我认为想要的是一个数字。你能否告诉我们你是否真的想要一个字符串或一个数字。它是从什么开始?你的代码和问题有点偏斜。干杯 – markhunte 2012-01-15 23:07:17
@markhunte我注意到了同样的事情,所以我提供了用于创建'NSNumber'的可选实现。还有'NSNumber'这个问题甚至是必要的,所以我提供了使用'NSNumber'的可选实现。 – zaph 2012-01-15 23:24:18
@markhunte输入来自UITextField。它的大小描述为:0000,000,00,0,1,2,3 ...以及4.5,5.25等。 CoreData类型是float,属性是NSNumber(因为我想能够在分组表中对它进行排序,数字为:0,1,2,11,23而不是0,1,11,2,23)。它以文本形式显示在表格单元格中。转换是从字符串到数字到字符串。哑我知道。但是,NSNumericSearch似乎不适用于iOS,至少对我而言。过去我一直无视000,但有些客户想要这种能力。 – Kurt 2012-01-16 05:46:08