Xamarin.ios CLLocation Coordinate.Latitude return 越南语没有翻倍

Xamarin.ios CLLocation Coordinate.Latitude return not double on viet language

我正在使用以下代码从 Xamarin.ios 获取值。

但是,当您将语言设置更改为越南语时,应作为数字输入的值将作为包含逗号 (,) 的数据接收。

126.82645585 >>>>> 126,82645585

38.123456 >>>>> 38,123456

Swift 或其他语言会出现这种情况吗?

public void SendLocation(object sender, LocationUpdatedEventArgs e)
    {
         CLLocation location = e.Location;
         strUrl = "test.com/api/gps?token=1234";
         strUrl += "&lati=";
         strUrl += location.Coordinate.Latitude;
         strUrl += "&longi=";
         strUrl += location.Coordinate.Longitude;
         strUrl += "&alti=";
         strUrl += location.Altitude;
    }

这里发生的事情是将双精度数或浮点数转换为字符串,C# 会自动遵守 App 的当前 Culture 集。

这意味着小数点分隔符会因语言而异,并且会根据您的选择而变化。

如果您始终希望使用相同的小数点分隔符。您可以告诉 C# 格式化它的文化不变性。

strUrl += location.Coordinate.Longitude.ToString(CultureInfo.InvariantCulture);

这应该将小数点分隔符保存为 .,如果您想要不同的格式,您可以实现自己的 IFormatProvider,它指示应该做什么。