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);
你是说%f对吧? – CodaFi 2012-04-11 22:07:13
@CodaFi no%g将被接受 – 2012-04-11 22:09:28
@CodaFi Apple的NSString格式说明符与IEEE的printf格式符合,因此%f,%e,%E,%g和%G都可以工作(但打印方式稍有不同) – Vervious 2012-04-11 22:43:35