您好我想在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
答案 0 :(得分:2)
发生这种情况的原因是CDbl
函数将使用逗号进行解析,就好像它们是长数字的可视分隔符一样。以此为例:
Sub Main
Dim val = "3,000"
Dim dVal = CDbl(val)
Console.WriteLine(dVal) ' Outputs 3000
End Sub
除非您确定逗号将始终用作小数值,否则您将无法确定这是否为数字3.000
或3000
您可以使用,
替换文本中的.
,如下所示:
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
处理替代数字样式。