0

我需要将NSDecimalNumber转换为需要转换为CLLocationDegrees的纬度/经度值。我使用了 -[NSDecimalNumber doubleValue]方法。但是该值失去了精度。我希望值相同。以下是我正在谈论的内容(我希望每个人都已经意识到这个问题)。

NSString *coordStr = @"-33.890934125621094";
NSDecimalNumber *lat = [NSDecimalNumber decimalNumberWithString:coordStr];
NSLog(@"%@", lat); // -33.890934125621094
NSLog(@"%lf", [lat doubleValue]); // -33.890934

有什么方法可以代替上述方法吗?

4

2 回答 2

3

尝试使用doubleValue方法转换字符串

NSString *coordStr = @"-33.890934125621094";

NSLog(@"%.17g",coordStr.doubleValue); //-33.890934125621094

查看这篇文章:如何在 iOS 上以全精度打印双精度?

编辑: 文档说: typedef double CLLocationDegrees;所以你只能double test = coordStr.doubleValue;解决问题,NSLog它不会打印完整的值。但是 double var 会保存完整的值。

于 2012-06-04T09:38:22.290 回答
1

CLLocationDegree 是双精度的。所以最大精度只能等于双精度数据类型。

于 2012-06-04T10:13:45.780 回答