0

我正在做一些 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 会显示为空?

4

2 回答 2

3

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

于 2012-04-11T22:05:48.213 回答
2

替换 NSLog(@"%@",topOfStack); 与 NSLog(@"%g",topOfStack);

于 2012-04-11T22:06:02.377 回答