注意[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