If Double.TryParse(array(3), doubleitem) Then
array(3) = doubleitem
Else
array(3) = Nothing
End If
答案 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是你的双重项目。