我正在使用CLLocation
获取当前位置,如下所示:
-(void)loadCurrentLocation{
if (manager==nil) {
manager=[[CLLocationManager alloc]init];
}
manager.delegate=self;
manager.desiredAccuracy=kCLLocationAccuracyBest;
[manager startUpdatingLocation];
}
- (void) viewDidLoad {
[super viewDidLoad];
[self loadCurrentLocation];
}
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
CLLocation *loc=newLocation;
if (loc!=nil) {
self.latitude=loc.coordinate.latitude; //1
self.longitude=loc.coordinate.longitude; //2
NSLog(@"Gained Latitude:%.f",self.latitude);
NSLog(@"Gained Longitude:%.f",self.longitude);
}
}
鉴于latitude
文件中longitude
和.h
声明如下:
@interface Prayers :UIViewController<CLLocationManagerDelegate>
@property double longitude;
@property double latitude;
@end
问题是第1行和第1行的返回值2是整数,如30和31,我期待它们像31.377033600000004000
和30.016893900000000000
,那么为什么返回的值是整数而不是double?提前谢谢
答案 0 :(得分:1)
如果类型不符合您的预期,Xcode可能会给您转换警告。是什么让你认为他们不是你回来的双打?也许框架只是四舍五入到最接近的程度并将其作为双精度返回?
另一种可能性。如果您的日志看起来像
那会怎么样?NSLog(@"Gained Latitude:%.2f",self.latitude);
是否打印更准确(请注意,格式为2)。
甚至可能尝试将它们装箱作为NSNumber并查看打印内容:
NSLog(@"Gained Latitude:%@", @(self.latitude));