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 が null になるのはなぜですか?

4

2 に答える 2

3

%@ はオブジェクトの文字列リテラルであるため、NULL を取得しています。double はオブジェクトではありません。float または double の NSLog に %f を使用します。

于 2012-04-11T22:05:48.213 に答える
2

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

于 2012-04-11T22:06:02.377 に答える