priceTotal.Text = (float.Parse(priceLiter.Text) * float.Parse(litres.Text)).ToString();不知何故,这在windows phone模拟器上运行良好,然而,在手机上,它完全忽略小数点,就像数字是整数一样进行乘法。
在模拟器上,最初从数字(1.442)解析priceLiter,并将其转换为字符串,以便可以将其放入TextBox中。在模拟器上,它将其转换为手机上的1.442,并将其转换为1,442 (请注意不同的小数点)
但是,InputScope="Number"仅显示小数点,而不显示逗号
因此,在仿真器上可以正确计算priceTotal,但在电话上它会忽略小数点.,并将其视为千位分隔符(我猜?),很明显,priceTotal是错误的。
经过一些研究,我预计这取决于区域格式,而数字键盘似乎没有本地化。
我该如何处理这个问题呢?在文本仍在输入的情况下,是否将输入的小数点替换为本地化的小数点?在解析数字之前,我是否应该自动将所有逗号替换为点?
我可以将InputScope更改为normal,但这不会真正改变任何事情,因为一半人会使用点输入数字,另一半人会使用逗号输入数字。
谢谢!
发布于 2013-12-11 17:13:55
您可以将当前的区域性强制为US:
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US");或者您可以将其作为参数提供给解析方法:
float.Parse(a, CultureInfo.GetCultureInfo("en-US"));考虑它的另一种方式是,您应该在收到它时对其进行解析。当用户将他的电话设置为荷兰时,他希望使用,作为小数标记。
发布于 2013-12-11 17:38:18
这可能是因为你的手机文化。
只需在app.xaml.cs构造函数上编写这两行代码
Thread.CurrentThread.CurrentCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = "."; 这个问题再也不会发生了。
https://stackoverflow.com/questions/20514896
复制相似问题