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

问题描述:

我正在做一些iOS学习,并且我有一个NSNumber,它似乎是按顺序的,但是当我询问它的doubleValue时,我得到空值。NSNumber doubleValue方法在目标C(IOS)中返回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,因为%@是对象的字符串文字。双打不是物体。使用%f来NSLog float或double。

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

+0

你是说%f对吧? – CodaFi 2012-04-11 22:07:13

+0

@CodaFi no%g将被接受 – 2012-04-11 22:09:28

+0

@CodaFi Apple的NSString格式说明符与IEEE的printf格式符合,因此%f,%e,%E,%g和%G都可以工作(但打印方式稍有不同) – Vervious 2012-04-11 22:43:35