我正在开发一个vb.net应用程序。
我的代码如下:
txtTotalPrevious.Text = Val(txtTotalPrevious.Text) + Val(txtoldtotal.text)
我的价值观是:
txtTotalPrevious.Text=187.0000
txtoldtotal=3
我得到了结果
result =190
但我的预期结果是:
result=190.0000
我的逻辑中有什么问题?
答案 0 :(得分:2)
如果您想按照自己的意愿输出字符串,可以使用String.Format
:
Dim str1 As String = "187.0000"
Dim str2 As String = "3"
Dim resultString As String = String.Format("{0:0.0000}", Val(str1) + Val(str2))
' And the result will be 190.0000
如果你想要双重结果:
Dim resultDouble as Double= Val(str1) + Val(str2)
' And the result will be Double 190
修改强>
基于varocarbas评论,您应该考虑一些注意事项:
避免使用Val方法
Val函数停止在第一个字符处读取字符串 无法识别为数字的一部分。符号和字符 通常被认为是数值的一部分,如美元符号和 逗号,不承认。但是,该功能可识别基数 前缀& O(对于八进制)和& H(对于十六进制)。空白,标签和 从参数中删除换行字符 以下电话 返回值1615198
Val(" 1615 198th Street N.E.")
Val函数仅将句点(。)识别为有效小数 分隔器。使用不同的小数分隔符时,如 国际申请,使用CDbl或CInt代替转换 字符串到一个数字。转换数字的字符串表示形式 在特定文化中使用数字类型,使用数字类型 Parse(String,IFormatProvider)方法。例如,使用Double.Parse 将字符串转换为Double时。
作为VB.Net程序员使用&而不是+用于字符串连接
使用+运算符时,您可能无法确定 是否会发生添加或字符串连接。使用& 用于连接的运算符以消除歧义并提供 自我记录的代码。