以下代码行给出了Resharper的警告:'使用相等运算符比较浮点数。在舍入值时可能会损失精确度。'
Dim samples() As Single
If samples(i) = Nothing Then
samples(i) = _mPreviousSamples(i)
End If
检查值是否存在的最佳方法是什么?
答案 0 :(得分:4)
检查值是否存在的最佳方法是什么?
对于像Single这样的值类型,我认为你有一个错误的概念“Nothing
”。对于值类型,Nothing
更准确地解释为类型的默认值:在Single的情况下,为0.0。
如果您想知道值类型是否存在值,则需要首先初始化值类型以保存在此上下文中从不存在的值。对于像Single这样的原始类型,Nothing
很少足够好。如果是Single,请尝试使用Single.NaN
,然后使用Single.IsNan()
答案 1 :(得分:1)
我不太了解VB.NET,但在C#中我会做float? samples = null;
之类的事情。
您能否将其声明为Dim s As System.Nullable(Of Single) = Nothing
答案 2 :(得分:1)
Dim samples As System.Nullable(Of Single) = Nothing
If samples.HasValue Then
Console.WriteLine(samples.Value)
Else
Console.WriteLine("samples is Nothing")
End If
编辑:精确度:
在大多数情况下,您可以像Nullable(Of Single)
一样使用Single
。 VB会在适当的情况下自动将其转换为Single
。如果没有,只需使用上面示例中的Value
属性。您也可以使用问号编写Nullable(Of Single)
,而不是Single?
。您可以测试samples.HasValue
。
samples IsNot Nothing
属性
Dim samples As Single? = Nothing
If samples Is Nothing Then
Console.WriteLine("samples is Nothing")
Else
Console.WriteLine(samples)
End If