如何检查 Double 类型的变量是否没有值。VB.NET

How To Check If A Variable From Double Type Doesn't Have A Value. VB.NET

提问人:MohammedAnas MohammedFuad 提问时间:2/4/2023 最后编辑:MohammedAnas MohammedFuad 更新时间:2/6/2023 访问量:301

问:

我在 VB.NET 的问题。

我希望你能看到我的代码,并不是我所有的代码都很重要。

重要的部分在第二个 if 条件中,它是 。if snum = ""

该变量是 Type 中的变量,我检查此变量是否为空。我的意思是它没有任何价值。snumdouble

当我运行代码时,程序在我告诉您的第二个if条件下向我显示此错误。

“”附加信息:从字符串 “” 到类型 'Double' 的转换无效。“”

我正在开发一个移动电机的程序。我写的代码是我在程序中做的事情之一。

我为什么检查??if snum = ""

因为的值是其中一个电机的坐标,它是 Z 轴电机。坐标写在 .snumTextBox

我从中获取了 Z 轴电机的坐标并将其放入变量中。然后我通过此代码检查变量是否为空。如果为空,则 Z 轴电机不会移动。如果不为空,即使其值为 Z 轴电机也会移动。TextBoxsnumsnumif snum == ""snumsnum0

那么如何检查 double 类型的变量是否没有值呢?

如果它的值是,则电机将移动。 我想检查它是否没有任何价值。0

这是代码。 该过程适用于按钮单击

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim snum As Double
        Dim tnum As Double
        Dim h As Integer = 0
        If h = 1 Then
            snum = TextBox1.Text
            tnum = TextBox1.Text
            TextBox3.Text = snum
            TextBox4.Text = tnum
        Else
            If snum = "" Then
                snum = tnum
                TextBox2.Text = "Hello , How Are You"
                TextBox3.Text = snum
                TextBox4.Text = tnum
            End If
        End If

    End Sub
字符串 vb.net 变量 double

评论

3赞 jmcilhinney 2/4/2023
怎么可能等于空呢?ALWAYS 类型的变量具有值,所有值类型也是如此。如果不赋值,则该值将是默认值,即 .如果你希望能够实际表示任何值,那么你需要使用一个可以为空的值,即 或简称。在使用可为 null 的值类型之前,应对其进行一些阅读。DoubleStringDouble0.0Nullable(Of Double)Double?
0赞 jmcilhinney 2/4/2023
也就是说,你的代码无论如何都没有意义。声明这三个变量并初始化为 ,然后测试它是否为 。显然不是这样,所以你总是会直接进入块,在这种情况下,你肯定没有分配任何东西,那么测试它的价值有什么意义呢?h01Elsesnum
0赞 MohammedAnas MohammedFuad 2/6/2023
@jmcilhinney我正在研究一个移动电机的程序。我写的代码是我在程序中做的事情之一。为什么我检查是否??因为的值是其中一个电机的坐标,它是 Z 轴电机。坐标写在 TextBox 中。我从 TextBox 中获取了 Z 轴电机的坐标并将其放入变量中。然后我检查此代码的 ''snum' 变量是否为空。如果为空,则 Z 轴电机不会移动。如果不为空,即使其值为 Z 轴电机也会移动。snum = ""snumsnumif snum == ""snumsnum0
0赞 MohammedAnas MohammedFuad 2/6/2023
@jmcilhinney 我编辑了问题,我更好地解释了我的问题
0赞 Joel Coehoorn 2/6/2023
你需要回到编程的基础知识。这是 101 级课程。 声明为 double,这是一种数值类型。该值是一个字符串:文本类型。如果比较它们没有意义。计算机不会像人类那样轻易地在数字和文本之间来回切换。打开,您将开始收到编译器错误,这将有助于您清理这个混乱。此外,穆罕默德是个骗子。snum""Option Strict

答:

0赞 tuyau2poil 2/4/2023 #1

Jmcilhinney 是对的:这段代码没有多大用处。但是,以下是如何使用 CDBL () 和 Tostring 将文本变量转换为 double,反之亦然:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim snum As Double
    Dim tnum As Double
    Dim h As Integer = 0
    If h = 1 Then
        snum = cDbl(TextBox1.Text)
        tnum = cDbl(TextBox1.Text)
        TextBox3.Text = snum.toString
        TextBox4.Text = tnum.toString
    Else
        If snum = 0 Then
            snum = tnum
            TextBox2.Text = "Hello , How Are You"
            TextBox3.Text = snum.toString
            TextBox4.Text = tnum.toString
        End If
    End If

End Sub

评论

0赞 MohammedAnas MohammedFuad 2/6/2023
我不想检查是否.为什么我检查是否??因为的值是其中一个电机的坐标,它是 Z 轴电机。坐标写在 .我从中获取了 Z 轴电机的坐标并将其放入变量中。然后我通过此代码检查变量是否为空。如果为空,则 Z 轴电机不会移动。如果不是空的,即使其值为 0,Z 轴电机也会移动。snum == 0snum = ""snumTextBoxTextBoxsnumsnumif snum == ""snumsnum
0赞 MohammedAnas MohammedFuad 2/6/2023
我编辑了问题,我更好地解释了我的问题。
0赞 jmcilhinney 2/6/2023 #2

您的代码仍然没有什么意义,但我将在更一般的意义上回答值类型。 是值类型,因此 ALWAYS 具有值。当您声明一个变量时,默认情况下,分配给该变量的内存将包含所有零,这在 VB 中表示。这实际上意味着什么取决于类型。对于所有引用类型(即类),它不表示对象。对于所有值类型(即结构),它表示该类型的默认值,例如 对于布尔值,#1/01/0001#对于所有数值类型,零。这意味着,在您的例子中,您的变量将具有值 。DoubleNothingFalseDateDouble0.0

如果您希望能够表示值类型的任何值,则必须使用可为 null 的值类型,例如 或简称。可以测试可为 null 的值类型的属性,以查看它是否具有值,如果有,则从该属性中获取该值。对于 /,该属性将为 类型 。请注意,获取 when is 属性将引发异常。Nullable(Of Double)Double?HasValueValueNullable(Of T)T?ValueTValueHasValueFalse

Dim d1 As Double?
Dim d2 As Double?

If d1.HasValue Then
    Console.WriteLine("d1 = " & d1.Value)
Else
    Console.WriteLine("d1 has no value")
End If

If d2.HasValue Then
    Console.WriteLine("d2 = " & d2.Value)
Else
    Console.WriteLine("d2 has no value")
End If

d1 = 0.0
d2 = 123.456

If d1.HasValue Then
    Console.WriteLine("d1 = " & d1.Value)
Else
    Console.WriteLine("d1 has no value")
End If

If d2.HasValue Then
    Console.WriteLine("d2 = " & d2.Value)
Else
    Console.WriteLine("d2 has no value")
End If