使用逗号和指定十进制数的点有什么区别?

时间:2017-12-08 21:06:37

标签: vb.net

您好我想在vb.net中制作一个简单的计算器,但我没什么问题。问题是我添加了两个数字,如4.3 + 1。当我像这样的双数字使用点时 - > 4.3它完美无缺。但是当我使用逗号来指定双重如 - > 4,3它不起作用。它读取的数字如43而不是4,3这是我的代码:

Label3.Text = Val(CDbl(TextBox1.Text)) + Val(CDbl(TextBox2.Text))
            Label3.Text = TextBox1.Text & " + " & TextBox2.Text & " = " & Label3.Text

pic1 pic2

1 个答案:

答案 0 :(得分:2)

发生这种情况的原因是CDbl函数将使用逗号进行解析,就好像它们是长数字的可视分隔符一样。以此为例:

Sub Main
    Dim val = "3,000"
    Dim dVal = CDbl(val)
    Console.WriteLine(dVal) ' Outputs 3000
End Sub

除非您确定逗号将始终用作小数值,否则您将无法确定这是否为数字3.0003000

您可以使用,替换文本中的.,如下所示:

Sub Main
    Dim val = "3,000"
    Dim dVal = CDbl(val.Replace(",","."))
    Console.WriteLine(dVal) ' Outputs 3
End Sub

但是,只要有人试图输入3,000,000

这样的数字,就会失败

或者,如果你碰巧知道你将要提前解析的文化,你可以做这样的事情。

Sub Main
    Dim val = "3,000,000.00"
    Dim deVal = "3.000.000,00"
    Console.WriteLine(Double.Parse(val)) ' Outputs 3000000
    Console.WriteLine(Double.Parse(deVal, New System.Globalization.CultureInfo("de-DE"))) ' Outputs 3000000
End Sub

该机器的当前文化用于第一个Parse,在我的情况下是" en-US"。通过专门使用" de-DE"文化,Parse处理替代数字样式。