2012-04-11 31 views
0

我正在做一些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出來爲空?

回答

3

您正在獲取NULL,因爲%@是對象的字符串文字。雙打不是物體。使用%f來NSLog float或double。

2

替換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