我需要将 NSDecimalNumber 转换为我需要转换为 CLLocationDegrees 的lat / lon值。我使用 - [NSDecimalNumber doubleValue] 方法。但价值失去了它的精确度。我希望价值观相同。以下是我所说的(我希望每个人都已经意识到这个问题)。
NSString *coordStr = @"-33.890934125621094";
NSDecimalNumber *lat = [NSDecimalNumber decimalNumberWithString:coordStr];
NSLog(@"%@", lat); // -33.890934125621094
NSLog(@"%lf", [lat doubleValue]); // -33.890934
我有什么方法可以做而不是做上述事情?
答案 0 :(得分:3)
尝试使用doubleValue
方法转换字符串
NSString *coordStr = @"-33.890934125621094";
NSLog(@"%.17g",coordStr.doubleValue); //-33.890934125621094
查看此帖子:How to print a double with full precision on iOS?
修改强>
文档说:typedef double CLLocationDegrees;
所以你double test = coordStr.doubleValue;
只能解决问题,NSLog
不打印完整的值。但是,double var保存了完整的值。
答案 1 :(得分:1)
CLLocationDegree是双倍的。因此,最大精度只能等于double数据类型的精度。