我正在使用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。
数字是否溢出?有没有更好的方法来做到这一点(即有效的方法)?
感谢。
答案 0 :(得分:3)
abs()
返回int
;你想要fabs()
。
(您也可以在iOS / OS X上使用ABS()
宏,它返回一个类型为参数类型的值。)