减去2个不同的双打产生零

时间:2011-03-25 18:23:52

标签: objective-c double-precision

我正在使用CLLocationManager和locationManager构建基于loc的应用程序:didUpdateToLocation:fromLocation: 我试图确定用户是否已经移动到足以触发其他一些处理。 我使用双变量。我很久以前就学会了不等于双打,而是将delta与阈值进行比较。我将abs(旧 - 新)与delta的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)>得到一个delta> 0.000500  DataModel.m:(214)> Delta LAT:abs(当前(39.440120) - 新(39.442494))= delta 0.000000。

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

感谢。

1 个答案:

答案 0 :(得分:3)

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

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