例如,我想转换一个字符串
NSString *stringWithNumber = @"3/4"
变成一个NSNumber
. 这怎么可能?
您可以使用 anNSEXpression
来“计算”该值。请注意,您将遇到“3/4”的常规 int 除法问题。
NSExpression *expression = [NSExpression expressionWithFormat:@"3.0/4.0"];
NSNumber *result = [expression expressionValueWithObject:nil context:nil];
如果您只使用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"
,它不会按预期工作,您肯定需要执行我上面建议的操作。
最重要的是,您应该更好地指定您的要求。