我正在做一些iOS学习,我有一个NSNumber看起来是有序的但是当我要求它的doubleValue时,我得到null。
[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会变为null?
答案 0 :(得分:3)
您将获得NULL,因为%@是对象的字符串文字。双打不是对象。使用%f来NSLog浮点数或双精度。
答案 1 :(得分:2)
替换NSLog(@“%@”,topOfStack);使用NSLog(@“%g”,topOfStack);