如何正确将字符串"4.20833333333333E-03"解析为Double类型?
解决VB.NET中科学计数法字符串解析错误的问题
你的解析错误源于系统区域文化设置:如果当前区域格式以逗号作为小数点分隔符,Double.Parse会把字符串里的点(.)识别成千位分隔符,从而得到错误结果。
以下是两种正确的解析方案:
方案一:使用不变文化直接解析
指定InvariantCulture(其小数点分隔符为点,匹配目标字符串格式)完成解析:
Dim sNumber As String = "4.20833333333333E-03" Dim d As Double = Double.Parse(sNumber, Globalization.CultureInfo.InvariantCulture)
方案二:用TryParse做安全解析
如果需要避免解析失败抛出异常,推荐使用Double.TryParse,同时明确指定支持科学计数法的格式规则和不变文化:
Dim sNumber As String = "4.20833333333333E-03" Dim d As Double If Double.TryParse(sNumber, Globalization.NumberStyles.Float Or Globalization.NumberStyles.AllowExponent, Globalization.CultureInfo.InvariantCulture, d) Then ' 解析成功,d即为正确的0.00420833333333333 Else ' 处理解析失败的逻辑 End If
内容的提问来源于stack exchange,提问作者tmighty
相关产品推荐
相关产品推荐

