CLLocationCoordinate2D возвращает целые числа для широты и долготы вместо двойных

Я использую 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 и 2 являются целыми числами, такими как 30 и 31, и я ожидал их как 31.377033600000004000 а также 30.016893900000000000, так почему возвращаемые значения являются целыми числами вместо двойных? заранее спасибо

1 ответ

Если типы не соответствуют вашим ожиданиям, Xcode, скорее всего, будет предупреждать вас о переходе. Что заставляет вас думать, что они не двойники, которые вы получаете? Может быть, рамки просто округляются до ближайшей степени и возвращают это как двойное число?

Еще одна возможность. что если ваш журнал выглядит

NSLog(@"Gained Latitude:%.2f",self.latitude);

Делает ли это печать более точным (обратите внимание, 2 в формате).


Может быть, даже пытаясь запечатать их как NSNumber и посмотреть, что это печатает:

    NSLog(@"Gained Latitude:%@", @(self.latitude));
Другие вопросы по тегам