【问题标题】:NSNumber doubleValue returns NaNNSNumber doubleValue 返回 NaN
【发布时间】:2012-09-08 02:26:46
【问题描述】:

如下图所示,nsdt 的值约为 0.033,但 doubleValue 方法返回 NaN。为什么不返回 0.033?

-(void) updateWithDTNSTime:(NSNumber*) nsdt;
{
    double dt = [nsdt doubleValue];

    if(isnan(dt))
    {
        printf("nan\n");
    }

    [self updateWithDTime:dt];
}

【问题讨论】:

  • 试试NSLog(@"nsdt = %@", nsdt);
  • 你从哪里得到这个号码?
  • @zneak -- 他正在查看调试器,上面“代码图片链接”后面的屏幕图像。
  • @Hot Licks,我看到了图片。我的意思是查看 NSNumber 实例的创建位置/方式。
  • 不幸的是,调试器并不是那么可靠,所以我更希望看到打印的 nsdt description

标签: objective-c nsnumber


【解决方案1】:

检查创建 nsdt 变量的代码。应该是这样的:

nsdt - [NSNumber numberWithDouble:0.033];

如果您的代码如下所示,您将获得 0:

int x = 0.033;
NSNumber *test = [NSNumber numberWithDouble:x];
double y = [test doubleValue];
NSLog(@"y= %f", y);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2010-10-17
    相关资源
    最近更新 更多