为什么我的函数输出一个看起来像内存地址的随机值?
Why is my function outputting a random value, which looks like a memory address?
我正在尝试输出我从 sql table 查询的纬度和经度值。我的问题是,当值为 0.000000 时,它会输出类似于 1.04480899798659e-276 的内容。
我检查了这两行代码上面的输出值:
latitudeOutput.text = [[NSNumber numberWithDouble:[theGPS latitude]] stringValue];
longitudeOutput.text = [[NSNumber numberWithDouble:[theGPS longitude]] stringValue];
它肯定会输出 0.000000 。有谁知道为什么会这样,无论如何我可以解决它?
----添加部分----
为什么这个 if else 语句直接进入 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;
}
内存地址的格式为0xdeadbeef
。
您的值是 scientfic notation. It is something extremely close to 0.0 (wolfram alpha visualization)
的 "variation" 中的双精度值
发生这种情况是因为计算机存储浮点值的方式。你可以阅读更多here.
为了解决您的问题,我建议您将输出格式化为只包含您需要的小数点后的数字。
NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", [theGPS latitude]];
这会给你小数点后 2 位。
我正在尝试输出我从 sql table 查询的纬度和经度值。我的问题是,当值为 0.000000 时,它会输出类似于 1.04480899798659e-276 的内容。 我检查了这两行代码上面的输出值:
latitudeOutput.text = [[NSNumber numberWithDouble:[theGPS latitude]] stringValue];
longitudeOutput.text = [[NSNumber numberWithDouble:[theGPS longitude]] stringValue];
它肯定会输出 0.000000 。有谁知道为什么会这样,无论如何我可以解决它?
----添加部分----
为什么这个 if else 语句直接进入 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;
}
内存地址的格式为0xdeadbeef
。
您的值是 scientfic notation. It is something extremely close to 0.0 (wolfram alpha visualization)
的 "variation" 中的双精度值发生这种情况是因为计算机存储浮点值的方式。你可以阅读更多here.
为了解决您的问题,我建议您将输出格式化为只包含您需要的小数点后的数字。
NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", [theGPS latitude]];
这会给你小数点后 2 位。