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

Posted

技术标签:

【中文标题】NSNumber doubleValue 方法在目标 C (IOS) 中返回 null【英文标题】:NSNumber doubleValue method returns null in objective C (IOS) 【发布时间】:2012-04-11 22:02:36 【问题描述】:

我正在做一些 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?

【问题讨论】:

【参考方案1】:

你得到 NULL 因为 %@ 是一个对象的字符串文字。双打不是对象。使用 %f NSLog 一个浮点数或双精度数。

【讨论】:

【参考方案2】:

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

【讨论】:

@CodaFi Apple 的 NSString 格式说明符与 IEEE 的 printf 匹配,因此 %f、%e、%E、%g 和 %G 都可以工作(但打印略有不同) 我想你的意思是NSLog(@"%@",result)

以上是关于NSNumber doubleValue 方法在目标 C (IOS) 中返回 null的主要内容,如果未能解决你的问题,请参考以下文章

关于 NSNumber numberWithDouble

使用NSExpression expressionForSubquery有条件地对数据求和

NumberFormatter string(from:NSNumber) 方法有小数位问题

关于NSNumber & NSValue的方法知识简单了解

NSNumber的用法

NSNumber 初始化问题