我刚开始在vb.net中结合SQL创建一个程序。
我有5个文本框,其中5个值包含2个小数,分别为10,50
,7,50
,8,50
,5,75
和8,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个盒子来计算。这是有效的,但正如我在这段代码中所说,它并没有总结小数。
有人对我的问题有所了解吗?
答案 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"))