Метод NSNumber doubleValue возвращает ноль в цели C (IOS)
Я изучаю iOS, и у меня есть NSNumber, который, кажется, в порядке, но когда я спрашиваю о его двойном значении, я получаю ноль.
[stack addObject: [NSNumber numberWithDouble:operand]]
id topOfStack = [stack lastObject];
if([topOfStack isKindOfClass:[NSNumber class]]){
NSLog(@"%@",topOfStack);
NSLog(@"%@",[topOfStack class]);
result = [topOfStack doubleValue];
NSLog(@"%@",result);
}
Это печатает:
2012-04-11 17:52:04.909 RPNCalc[4127:f803] 3
2012-04-11 17:52:04.910 RPNCalc[4127:f803] __NSCFNumber
2012-04-11 17:52:04.910 RPNCalc[4127:f803] (null)
Почему doubleValue будет равно нулю?
2 ответа
Решение
Вы получаете NULL, потому что%@ является строковым литералом для объекта. Двойники не являются объектами. Используйте%f, чтобы NSLog поплавок или удвоить.