gpt4 book ai didi

无法比较两个 CLLocation 坐标 2D(负零??)

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:16 24 4
gpt4 key购买 nike

我在我的 iOS 应用程序中比较两个(应该相同的)CLLocationCoordinate2D 结构时遇到了最困难的情况。出于某种原因,无论我如何比较它们,纬度都不会说它是相等的。

代码:

double dlat = self.mapView.centerCoordinate.latitude - self.centerOnNextView.coordinate.latitude;
double dlong = self.mapView.centerCoordinate.longitude - self.centerOnNextView.coordinate.longitude;
NSLog(@"dlat: %f dlong: %f, dlat == 0.0: %d, dlat == -0.0: %d, dlong == 0.0: %d, dlong == -0.0: %d",
dlat, dlong, dlat == 0.0, dlat == -0.0, dlong == 0.0, dlong == -0.0);
if ( ( dlat == 0.0 || dlat == -0.0 ) && ( dlong == 0.0 || dlong == -0.0 ) ) {
NSLog(@"WE ARE EQUAL!");
}

我什至尝试了 if ( [@(dlat) isEqualToNumber:@(0)] && [@(dlong) isEqualToNumber:@(0)] ) 作为比较检查,但它也失败了.

这是输出:

dlat: -0.000000
dlong: 0.000000
dlat == 0.0: 0 (false)
dlat == -0.0: 0 (false)
dlong == 0.0: 1 (true)
dlong == -0.0: 1 (true)

出于某种原因,我一直在那里得到负零,没有什么能与之相比。我到底该怎么做才能让这些东西进行比较?!

最佳答案

dlat 没有 0.0 的值。 在打印时使用 %e 而不是 %f 以查看差异。

dlat == 0.0 中将数字与 0.0 进行比较得到与 dlat == -0.0 相同的结果。无需进行两次比较。


更多关于-0
0.0 和 -0.0 具有相同的 numeric 值,并且在六个比较运算符 >=、>、==、!=、<、<= 中相互比较。

如果必须区分零,可以使用int signbit()memcmp()。存在许多方法。

关于无法比较两个 CLLocation 坐标 2D(负零??),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18200609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com