最近遇到了一个奇怪的现象,参见说明代码:
1 Dim a As String = "1000"
2 Dim b As String = "1"
3 Dim c As String = "6"
4 Dim d As String
5 Dim f As Long
6
7 d = CStr(CLng(a) * CLng(b) / CLng(c))
8 f = (CLng(a) * CLng(b) / CLng(c)).ToString
9
10 MessageBox.Show(d)
11 MessageBox.Show(f)
以上代码中d 和f 的值并不相同。
使用CSTR()的时候,返回值并没有四舍五入,而使用.TOSTRING()的时候进行了四舍五入。
可见,这种情况下.TOSTRING()才是我们期待的结果,如果使用CSTR()的话将返回错误的值。
所以建议尽量使用VB.NET的函数,放弃VB老版本的函数。
CStr是运算符,不是函数。CLng等也是一样
CStr就等于CType(, String)。VB定义了一些扩展转换,.NET无法转换的东西有时VB也可以转换(比如从string到数值)。
这里全都是你的错,不关VB的事。你可知“/”是实数除法,会得到浮点数。整数除法是“\",只有\才能得到整数。为什么ToString的结果是对的,你自己看看f定义成什么类型了?
程序行为不对要先从自己的代码里找错误,不要抱怨编译器。
-------------------------------------------------------------
我原以为它们的作用都是把其他类型的数据转换成string类型.结果今天在转换一个数据库传回的null类型时,cstr()出错,而.tostring转换为空字符.
有人知道他们还有那些细节差别吗??编程语言:VB.NET
CStr是转换类型为string,因此只有非常有限的几种类型才能转换,比如数值,布尔,日期等。而tostring方法是类(或者说变量)的字符串表示形式,当为值类型时,一般等效于cstr函数,为引用类型时返回所属的完整命名空间和类名,为null时返回空字符串。 |