1

我正在构建一个基于 loc 的应用程序,使用 CLLocationManager 和 locationManager:didUpdateToLocation: fromLocation: 我试图确定用户是否移动到足以触发其他处理。我正在使用双变量。我很久以前就学会了不要将双打等同,而是将增量与阈值进行比较。我将 abs(旧 - 新)与 0.0005f 的增量进行比较

但是这段代码...

    double latDelta = abs(theConsumer.latLong.clLocation.coordinate.latitude  - newLocation.coordinate.latitude);
    double lonDelta = abs(theConsumer.latLong.clLocation.coordinate.longitude - newLocation.coordinate.longitude);

    NSString *fooBar = [NSString stringWithFormat: 
           @"???Delta LAT: abs(current (%f) - new (%f)) = delta %f.",
           theConsumer.latLong.clLocation.coordinate.latitude,
           newLocation.coordinate.latitude,
           latDelta];

产生这个输出:delta 为零。

GPSLogger.m:(26)> GPSLOG: GPS: 39.4425- North, 77.8132- West/n MeterAccuracyFormat 0

GPSLogger.m:(26)> GPSLOG: 找到新坐标:Lat:39.442494 Lon:-77.813175 DataModel.m:(197)> DistanceFromLoc: 710.517020 DataModel.m:(199)> Got a delta > 0.000500 DataModel.m:( 214)> Delta LAT:abs(当前 (39.440120) - 新 (39.442494)) = delta 0.000000。

数字是否溢出?有没有更好的方法来做到这一点(即一种有效的方法)?

谢谢。

4

1 回答 1

3

abs()返回一个int;你想要fabs()

(您也可以ABS()在 iOS/OS X 上使用宏,它返回一个类型为参数类型的值。)

于 2011-03-25T18:34:01.773 回答