5+3*5-3 のような算術式を評価するために次のコードを使用しているカスタム計算機を既に実装しています。
- (NSNumber *)evaluateArithmeticStringExpression:(NSString *)expression {
NSNumber *calculatedResult = nil;
@try {
NSPredicate * parsed = [NSPredicate predicateWithFormat:[expression stringByAppendingString:@" = 0"]];
NSExpression * left = [(NSComparisonPredicate *)parsed leftExpression];
calculatedResult = [left expressionValueWithObject:nil context:nil];
}
@catch (NSException *exception) {
NSLog(@"Input is not an expression...!");
}
@finally {
return calculatedResult;
}
}
しかし、除算演算で整数を使用している場合、結果として整数のみが得られます。5/2 の場合、結果として 2 を取得しているとしましょう。整数除算のため、プログラミングの揺れにぴったりです。
しかし、浮動小数点の結果が必要です。
式文字列をスキャンして整数除数を浮動小数点として置き換えるのではなく、どうすれば取得できますか。この例では、5/2.0 または 5.0/2 です。