我想一個字符串轉換例如用轉換因子的NSString(例如@ 「3/4」)到的NSNumber
NSString *stringWithNumber = @"3/4"
爲NSNumber
。 這可能怎麼樣?
我想一個字符串轉換例如用轉換因子的NSString(例如@ 「3/4」)到的NSNumber
NSString *stringWithNumber = @"3/4"
爲NSNumber
。 這可能怎麼樣?
您可以使用NSEXpression
來「計算」該值。請注意,你將有「3/4」的普通int分區問題。
NSExpression *expression = [NSExpression expressionWithFormat:@"3.0/4.0"];
NSNumber *result = [expression expressionValueWithObject:nil context:nil];
圓滑,即使輸入字符串是'3/4',正如您已經注意到的那樣,它將無法按預期工作。 –
在這種情況下,我已經解決了'int'問題。看到這個 - [Convert to Float and Calculate](http://stackoverflow.com/questions/14155360/convert-to-float-and-calculate/14155699#14155699) – TheTiger
@TheTiger看起來不錯! –
如果你只用n/m
分數的工作,你的意思是有代表的部分結果的數量,你可以這樣做
NSString *fraction = @"3/4";
NSArray *components = [fraction componentsSeparatedByString:@"/"];
float numerator = [components[0] floatValue];
float denominator = [components[1] floatValue];
NSNumber *result = @(numerator/denominator);
NSLog(@"%@", result); // => 0.75
當然,這可以很容易地在畸形字符串的情況下,打破,因此您可能需要在執行上述計算之前檢查格式。
注意
如果在輸入來的分數與本地浮動師兼容的格式,大衛的答案肯定是更時尚,比我少笨重。雖然如果您有像@"3/4"
這樣的輸入,它將無法按預期工作,並且您肯定需要按照上面的建議進行操作。
底線,您應該指定更好的要求。
你想把它轉換成什麼? '3'? '4'? '0.75'? –
你想要的是一個表達式解釋器/評估器。我不知道iOS上有任何「標準」,但我認爲有幾個開源軟件正在流行。 –
對於'@「3.0/4.0」',您可以使用'NSExpression',如下面的示例所示:http://stackoverflow.com/a/12500518/1187415。但對於你的輸入,將做一個整數除法併產生零。 - 另請參見[什麼是快速C或Objective-C數學解析器?](http://stackoverflow.com/questions/4892152/what-is-a-fast-c-or-objective-c-math-parser) 。 –