2012-04-11 8 views
0

私はいくつかのiOS学習をしていますが、NSNumberが順番にあるように見えますが、そのdoubleValueを求めるとnullになります。NSNumber doubleValueメソッドは、目的C(IOS)でヌルを返します

[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として出てくるのでしょうか?

答えて

3

%@はオブジェクトの文字列リテラルなので、NULLが表示されています。ダブルスはオブジェクトではありません。 floatまたはdoubleをNSLogするには、%fを使用します。

2

NSLog(@ "%@"、topOfStack)を置き換えます。 NSLog(@ "%g"、topOfStack);

+0

あなたは%fを意味しますか? – CodaFi

+0

@CodaFi%gは受け入れられます –

+0

@CodaFiアップルのNSStringフォーマット指定子はIEEEのprintfと一致しますので、%f、%e、%E、%g、%Gはすべて動作しますが、わずかに異なります) – Vervious

関連する問題