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

问题描述 投票:0回答:1

我们正在使用针对Android和iOS的Xamarin跨平台开发来开发移动应用程序,该应用程序正在从蓝牙设备读取数据,该设备以浮动方式(即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;
        }
    }
xamarin xamarin.forms xamarin.android xamarin.ios
1个回答
0
投票

代替使用此

double val = Convert.ToDouble(rslt);

执行此操作

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

这将强制它使用小数点分隔符来评估“ 123.45”,而不考虑用户的本地区域性如何设置

© www.soinside.com 2019 - 2024. All rights reserved.