为什么我的函数输出一个随机值,看起来像一个内存地址?

时间:2015-08-18 10:35:39

标签: ios sqlite double nsnumber

我试图输出经度和经度的值,我从sql表中查询过。我的问题是,当值为0.000000时,它会输出1.04480899798659e-276的内容。 我检查了这两行代码上面的输出值:

latitudeOutput.text = [[NSNumber numberWithDouble:[theGPS latitude]] stringValue];
longitudeOutput.text = [[NSNumber numberWithDouble:[theGPS longitude]] stringValue];

它肯定会输出0.000000。有谁知道为什么会发生这种情况,无论如何我可以解决它?

----添加了章节----

为什么这个if if语句会直接进入else部分,尽管纬度和经度值等于0.000000?

if(latitude == @"0.000000" && longitude == @"0.000000"){
    latitudeOutput.textColor = [UIColor grayColor];
    longitudeOutput.textColor = [UIColor grayColor];
    latitudeOutput.text = @"Latitude";
    longitudeOutput.text = @"Longitude";
}
else {
    latitudeOutput.text = latitude;
    longitudeOutput.text = longitude;
}

1 个答案:

答案 0 :(得分:2)

内存地址的格式为0xdeadbeef

你的价值是用scientfic notation.的“变体”写的双重值。它非常接近0.0 (wolfram alpha visualization)

这是因为计算机存储浮点值的方式。您可以阅读更多here.

要解决您的问题,我建议您将输出格式化为仅包含小数点后的数字。

NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", [theGPS latitude]];

这将在小数点后给你2个位置。