Double.TryParse - 无法正常工作

时间:2015-05-26 09:59:22

标签: vb.net

当值“NaN”进入以下代码的检查被认为是双重解析的正确值时,我感到很惊讶:O并进入了if和nto else ...你知道为什么会这样,以及如何更好地保护我的代码避免这种情况。只有当数字可以转换为double时才值。

 If Double.TryParse(array(3), doubleitem) Then

                array(3) = doubleitem
            Else
                array(3) = Nothing
            End If

enter image description here

3 个答案:

答案 0 :(得分:3)

您可以尝试使用text = fname.read() total = sum(char.isspace() or char == "0" for char in text) zero_count = sum(char == "0" for char in text) space_count = sum(char.isspace() for char in text) 解析它(因为其他语言对InvariantCulture使用不同的名称),然后明确检查它是否为NaN Double.NaN

<>

您必须使用Double.IsNan来检查某个数字是否为双倍you cannot compare it

答案 1 :(得分:3)

这不是Double.TryParse的错误行为,而是你身边的误解 Double结构实际上包含一个名为NaN的常量,它表示一个不是数字的值。 因此,当您对字符串Double.TryParse执行"NaN"时,结果为Double.NaN,这是double的有效值。

将您的条件更改为

If Double.TryParse(array(3), doubleitem) andalso not Double.IsNaN(doubleitem) Then
     array(3) = doubleitem
Else
     array(3) = Nothing
End If

一切都应该有效。

答案 2 :(得分:0)

三个正确的解决方案是:

Console.WriteLine( 0/zero = Double.NaN )
Console.WriteLine( 0/zero <> Double.NaN )
Console.WriteLine( Double.IsNaN(0/zero) )

0/0是你的双重项目。

https://msdn.microsoft.com/en-us/library/bb264491.aspx