NSNumber doubleValue方法在目标C(IOS)中返回null

时间:2012-04-11 22:02:37

标签: objective-c ios nsnumber

我正在做一些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?

2 个答案:

答案 0 :(得分:3)

您将获得NULL,因为%@是对象的字符串文字。双打不是对象。使用%f来NSLog浮点数或双精度。

答案 1 :(得分:2)

替换NSLog(@“%@”,topOfStack);使用NSLog(@“%g”,topOfStack);