1

我只需使用 [NSString stringWithFormat:@"%.5f, %.5f"]; 将 CLLocations 转换为逗号分隔的字符串,例如 "75.45874, -45.17292" 并将它们发送到我的服务器应用程序,该应用程序期望字符串为两个数字,小数点作为小数分隔符。

阅读完所有文档后,我终生无法弄清楚这些坐标是否取决于区域设置,即如果用户在海外(我在美国),他们的位置是否会以逗号作为小数点分隔符:“75,45874,-45,17292”?

我知道有几种不同的方法可以在需要时将逗号转换为小数,例如使用 NSNumberFormatter,我只是想弄清楚我是否真的需要这样做?我试过用模拟器模拟位置,但我不知道语言环境设置是否会渗透到 CLLocation 的纬度/经度属性,并能正确模拟这种情况。有什么见解吗?

4

1 回答 1

1

a 中的坐标CLLocation表示为CLLocationDegrees定义为double。这是浮点数,不依赖于语言环境。

创建一个字符串

[NSString stringWithFormat:@"%.5f, %.5f", lat, lon]

也不依赖于语言环境。stringWithFormat(几乎)符合IEEE printf 规范%f,该规范将转换 定义为

双参数应转换为“[-]ddd.ddd”样式的十进制表示法,...

因此,您的代码将始终生成一个作为小数分隔符。

另一方面,NSNumberFormatter除非另有说明,否则使用用户的区域设置首选项进行转换。如果您将语言环境设置为标准的“POSIX 语言环境”,则可以在您的情况下使用它:

NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];
[myFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
于 2014-05-19T19:32:12.963 回答