我将CLLocations转换为以逗号分隔的字符串,例如" 75.45874,-45.17292"只需使用[NSString stringWithFormat:@"%。5f,%。5f"];并将它们发送到我的服务器应用程序,该应用程序希望该字符串为带小数点的两个数字作为小数分隔符。
在阅读完所有文档之后,我无法判断我的生活是否依赖于语言环境,即用户是否在海外(我在美国)他们的location使用逗号作为小数分隔符:" 75,45874,-45,17292"?
我知道一些不同的方法可以在需要时将逗号转换为小数,例如使用NSNumberFormatter,我只是想弄清楚我是否真的需要?我已尝试使用模拟器模拟位置,但我不知道区域设置是否会逐渐降低到CLLocation的纬度/经度属性,并且会正确模拟这种情况。任何见解?
答案 0 :(得分:1)
CLLocation
中的坐标表示为CLLocationDegrees
,定义为double
。这是浮点数,而不依赖于语言环境。
使用
创建字符串[NSString stringWithFormat:@"%.5f, %.5f", lat, lon]
也不依赖于语言环境。 stringWithFormat
(差不多)符合IEEE printf specification
它将%f
转换定义为
双参数应转换为十进制表示法 style" [ - ] ddd.ddd",...
因此,您的代码将始终生成 point 作为小数分隔符。
另一方面,NSNumberFormatter
使用用户的区域设置首选项进行转换
除非另有说明。如果将语言环境设置为标准,则可以在您的情况下使用它
" POSIX语言环境":
NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];
[myFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];