我将CLLocations转换为逗号分隔的字符串,如"75.45874,-45.17292",只需使用[NSString stringWithFormat:@"%。5 f % .5f");并将它们发送到我的服务器应用程序,该应用程序期望字符串为两个数字,以小数点作为小数分隔符。
读完所有的文档后,我不能为我的生活弄清楚这些坐标是否依赖于地区,也就是说,如果一个用户在海外(我在美国)他们的位置有一个逗号作为小数分隔符:"75,45874,-45,17292"?
我知道有几种不同的方法可以在需要时将逗号转换成小数,比如使用NSNumberFormatter,我只是想弄清楚我是否需要这样做?我试过用模拟器模拟位置,但我不知道区域设置是否会渗透到CLLocation的纬度/经度属性,是否会正确地模拟这样的情况。见解吗?
CLLocation
中的坐标表示为CLLocationDegrees
,定义为double
。这是浮点数,与语言环境无关。
用
创建字符串[NSString stringWithFormat:@"%.5f, %.5f", lat, lon]
也不依赖于语言环境。stringWithFormat
(几乎)符合IEEE printf规范它将%f
转换定义为
所以你的代码总是会产生一个点作为小数分隔符。双精度实参应在风格"[-]ddd。ddd"…
另一方面,NSNumberFormatter
使用用户的语言环境首选项进行转换除非另有说明。如果您将区域设置设置为标准,则可以在您的情况下使用它"POSIX locale":
NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];
[myFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];