xamarin非英语点和逗号计算(xamarin多语言支持)

xamarin非英语点和逗号计算(xamarin多语言支持),xamarin,xamarin.forms,xamarin.android,xamarin.ios,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我们正在开发一个移动应用程序,使用Xamarin跨平台开发Android和iOS,从蓝牙设备读取数据,该设备以浮点形式传输数据,即12.22,它将支持多种语言 当设置为英语时,我们所有的计算都很好,但当设置为非英语时,计算完全错误。我知道在非英语语言中有什么不对,它把“.”当作“,”,意思是12.22变成12,22。因此,把我们的计算搞砸了 我发现了类似的问题,但它们迫使完整的语言变成英语,这意味着我们失去了翻译和其他修复看起来非常复杂,因为必须是一个简单的修复 这个问题有没有简单的解决方法,比

我们正在开发一个移动应用程序,使用Xamarin跨平台开发Android和iOS,从蓝牙设备读取数据,该设备以浮点形式传输数据,即12.22,它将支持多种语言

当设置为英语时,我们所有的计算都很好,但当设置为非英语时,计算完全错误。我知道在非英语语言中有什么不对,它把“.”当作“,”,意思是12.22变成12,22。因此,把我们的计算搞砸了

我发现了类似的问题,但它们迫使完整的语言变成英语,这意味着我们失去了翻译和其他修复看起来非常复杂,因为必须是一个简单的修复

这个问题有没有简单的解决方法,比如在Xamarin多语言支持中设置一个标志

更新: 使用BLE传输代码,我们可以看到字符串,但当它转换为法语时,我们得到6000000,英语得到60

 private async Task<double> 
 GetDatastoreValue(Plugin.BLE.Abstractions.Contracts.IService service, string param)
    {
        try
        {
            var datastore_param_char = await service.GetCharacteristicAsync(Guid.Parse(datastore_param_uid));
            var datastore_param_val = await service.GetCharacteristicAsync(Guid.Parse(datastore_value_uid));

            await datastore_param_char.WriteAsync(Encoding.ASCII.GetBytes(param));
            byte[] result = await datastore_param_val.ReadAsync();

            string rslt = Encoding.ASCII.GetString(result);
            Debug.WriteLine("GetDatastoreValue -> result " + result);
            double val = Convert.ToDouble(rslt);
            Debug.WriteLine("GetDatastoreValue -> val -> "+ val);
            return val;
        }
        catch
        {
            return 0.0;
        }
    }
专用异步任务
GetDatastoreValue(Plugin.BLE.Abstracts.Contracts.IService服务,字符串参数)
{
尝试
{
var datastore_param_char=wait service.GetCharacteristicAsync(Guid.Parse(datastore_param_uid));
var datastore_param_val=wait service.GetCharacteristicAsync(Guid.Parse(datastore_value_uid));
等待数据存储\u param\u char.WriteAsync(Encoding.ASCII.GetBytes(param));
byte[]result=wait datastore_param_val.ReadAsync();
字符串rslt=Encoding.ASCII.GetString(结果);
Debug.WriteLine(“GetDatastoreValue->result”+result);
double val=转换为双精度(rslt);
Debug.WriteLine(“GetDatastoreValue->val->”+val);
返回val;
}
抓住
{
返回0.0;
}
}
而不是使用此

double val = Convert.ToDouble(rslt);
这样做

double val = Double.Parse(rslt, CultureInfo.InvariantCulture);
这将迫使它使用十进制分隔符计算“123.45”,而不管用户的本地文化设置为什么,而不是使用此分隔符

double val = Convert.ToDouble(rslt);
这样做

double val = Double.Parse(rslt, CultureInfo.InvariantCulture);

这将迫使它使用十进制分隔符计算“123.45”,而不管用户的本地文化可能被设置为什么

您可以在解析数据时指定一种格式-可能它是作为字符串出现的-但由于您没有提供任何代码,我无法给出具体示例。如果您想让我详细说明,请发布您的数据解析代码。您可以在解析数据时指定一种格式—可能是字符串—但由于您没有提供任何代码,因此我无法给出具体示例。如果你想让我详细解释的话,请把你的数据解析代码贴出来。这真是太棒了,怎么做。你知道这些吗?我永远也找不到那种解决办法。很多感谢这真是太棒了,你怎么做。你知道这些吗?我永远也找不到那种解决办法。非常感谢