没有小数点后2位的和

时间:2018-01-30 18:59:12

标签: vb.net visual-studio

我刚开始在vb.net中结合SQL创建一个程序。

我有5个文本框,其中5个值包含2个小数,分别为10,507,508,505,758,25。当我对此进行总结并将其放在另一个文本框中时,它会显示值38,00而不是40,50

我的代码如下:

Public Sub plussen()

    Dim i1 As Integer
    Dim i2 As Integer
    Dim i3 As Integer
    Dim i4 As Integer
    Dim i5 As Integer
    Dim i6 As Integer

    For i1 = 5 To 20
        i2 = i1 + 396
        i3 = i1 + 496
        i4 = i1 + 596
        i5 = i1 + 696
        i6 = i1 + 896

        Me.Controls.Find("TextBox" + CStr(i1), True)(0).Text = (Val(Me.Controls.Find("TextBox" + CStr(i2), True)(0).Text) + Val(Me.Controls.Find("TextBox" + CStr(i3), True)(0).Text) + Val(Me.Controls.Find("TextBox" + CStr(i4), True)(0).Text) + Val(Me.Controls.Find("TextBox" + CStr(i5), True)(0).Text) + Val(Me.Controls.Find("TextBox" + CStr(i6), True)(0).Text)).ToString("F2")

    Next
End Sub

我把它放在一个循环中,因为我有20 x 5个盒子来计算。这是有效的,但正如我在这段代码中所说,它并没有总结小数。

有人对我的问题有所了解吗?

2 个答案:

答案 0 :(得分:1)

这是超级蹩脚但是来自文档:

  

Val函数仅将句点(。)识别为有效小数   分隔器。当使用其他小数分隔符时,如在国际中   应用程序,使用CDbl或CInt代替将字符串转换为   数。转换a中数字的字符串表示形式   特定文化到数值,使用数字类型   Parse(String,IFormatProvider)方法。例如,使用Double.Parse   将字符串转换为Double时。

所以基本上你需要使用'。'而不是在文本框中使用','或者更好地从Val()切换到Double.Parse()。

参考:https://msdn.microsoft.com/en-us/library/9da280t0(v=vs.110).aspx

答案 1 :(得分:1)

将val()更改为Convert.ToDecimal()并使用CultureInfo(" fr-FR")指定小数格式。

e.g。

Convert.ToDecimal("10,5", new CultureInfo("fr-FR"))