1

例如,我想转换一个字符串

NSString *stringWithNumber = @"3/4"

变成一个NSNumber. 这怎么可能?

4

2 回答 2

5

您可以使用 anNSEXpression来“计算”该值。请注意,您将遇到“3/4”的常规 int 除法问题。

NSExpression *expression = [NSExpression expressionWithFormat:@"3.0/4.0"];
NSNumber *result = [expression expressionValueWithObject:nil context:nil];
于 2013-06-27T15:26:00.650 回答
4

如果您只使用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",它不会按预期工作,您肯定需要执行我上面建议的操作。

最重要的是,您应该更好地指定您的要求。

于 2013-06-27T15:23:35.433 回答