C# float.Parse 解析字符串出现异常: FormatException : Input string was not in a correct format.

        今天发现一个问题,float.Parse(srcStr); 解析字符串的float数值是,发现了了一个报错,错误信息如下, 直接指向的就是float.Parse(srcStr);这个部分。

d76b778e8f894819acff35cd118ce0d0.png

         在手机上试了下,没有发现问题啊,一切正常,那这个是怎么产生的呢?于是度娘一番,发现了一篇博文给出了一种必现的方式。博文地址: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的效率高,容错也好。

        记录一下,以便帮助更多出现这种问题的朋友。

 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值