今天发现一个问题,float.Parse(srcStr); 解析字符串的float数值是,发现了了一个报错,错误信息如下, 直接指向的就是float.Parse(srcStr);这个部分。
在手机上试了下,没有发现问题啊,一切正常,那这个是怎么产生的呢?于是度娘一番,发现了一篇博文给出了一种必现的方式。博文地址:https://blog.csdn.net/chenshulove/article/details/133753994
方法就是:将手机切换成法语,于是在运行的时候,变产生了上面的问题。
解决方案:
修改代码如下:
float floatVal = float.Parse(srcStr, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture);
同时,如果srcStr本身是一个整数的字符串,如“100”,这种情况下是没有问题的。也就是说,srcStr只要带小数,用 float.Parse 进行解析就会出现上面的问题。
在解析的时候,如果放到try - catch中,虽然不会导致程序的崩溃,但也不能正确解析出正确的值。
对于Parse()的一点说明:
Parse(null)会产生异常,TryParse()是对Parse()做了一个异常处理,如果出现异常则返回false,并且将输出参数返回0;Parse用来转换String类型的数据,TryParse的效率比Parse的效率高,容错也好。
记录一下,以便帮助更多出现这种问题的朋友。