如何进行计算用户输入的总计量的草坪程序

时间:2013-12-11 06:16:35

标签: vb.net

我正在尝试一个计算草坪大小的程序 - 它将有2个文本框和一个标签length * width = total metres。我的问题是,当我输入十进制值时,它显示错误,但当我在文本框中放置整数值时,它显示没有错误并计算它,我做了一切正确我的代码看起来像这样

Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
        Dim decLegth, decWidth, decSize As Decimal
        decLegth = Convert.ToDecimal(txtLength.Text)
        decWidth = Convert.ToDecimal(txtWidth.Text)
        decSize = decLegth * decWidth
        lblDisplay.Text = decSize.ToString("N2")

我能错过什么?

2 个答案:

答案 0 :(得分:2)

这很可能是一种文化问题。您会看到,在某些国家/地区,小数字由 , 分隔,而其他小数位则使用 .

这就是我将应用程序的文化设置为挪威语的方式:

System.Threading.Thread.CurrentThread.CurrentCulture = New CultureInfo("nb-NO")
System.Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("nb-NO")

所以现在,如果我尝试转换我喜欢这样:

Dim d As Decimal = Convert.ToDecimal("10,0", System.Threading.Thread.CurrentThread.CurrentCulture)

这里是list of culture codes所以你可以找到你的。

另一方面,您应该使用NumericUpDown控件而不是TextBox。 它公开了显示的"文本"的十进制Value属性。

答案 1 :(得分:0)

不要对变量使用Decimal类型,而是使用Double。问题可能在于它尝试将文本框字符串值转换为Decimal时。相反,你做这样的事情:

Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
    Dim decLegth, decWidth, decSize As Double
    decLegth = Convert.ToDouble(txtLength.Text)
    decWidth = Convert.ToDouble(txtWidth.Text)
    decSize = decLegth * decWidth
    lblDisplay.Text = decSize.ToString("N2")

另外,我实际上当前没有VB编译器,但您可能必须先将文本框值转换为字符串,尝试两种方式:

Convert.ToDouble(txtLength.Text.ToString());