http://blog.5d.cn/user1/kafeichong/200510/174915.html
Author:咖啡虫 PublishTime:2005-10-23
这些函数采用内联方式编译,即转换代码是计算表达式的代码的一部分。因为不需要调用完成转换的过程,因此执行速度更快。每个函数都将表达式强制转换为一种特定的数据类型。
CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CShort(expression)
CSng(expression)
CStr(expression)
各部分说明
expression
必选项。任何 String 表达式或数值表达式。
返回类型
函数名称决定了返回类型,如下表所示。
函数名称 返回类型 expression 参数范围
CBool Boolean 任何有效的 String 或数值表达式。
CByte Byte 0 到 255,舍入小数部分。
CChar Char 任何有效的 String 表达式;取值范围为 0 到 65535。
CDate Date 任何有效的日期和时间表示法。
CDbl Double 负值取值范围为 -1.79769313486231E+308 到 -4.94065645841247E-324;正值取值范围为 4.94065645841247E-324 到 1.79769313486231E+308。
CDec Decimal 对于零变比数值,即无小数位数值,为 +/-79,228,162,514,264,337,593,543,950,335。对于具有 28 位小数位的数字,范围是
+/-7.9228162514264337593543950335。最小的非零数是 0.0000000000000000000000000001。
CInt Integer -2,147,483,648 到 2,147,483,647,舍入小数部分。
CLng Long -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,舍入小数部分。
CObj Object 任何有效的表达式。
CShort Short -32,768 到 32,767,舍入小数部分。
CSng Single 负值的取值范围为 -3.402823E+38 到 -1.401298E-45;正值的取值范围为 1.401298E-45 到 3.402823E+38。
CStr String CStr 的返回值由参数 expression 决定。请参见 CStr 返回值。
备注
如果传递给函数的 expression 超出要转换为的数据类型的范围,将发生错误。
通常,可以使用数据类型转换功能将某些操作的结果强制转换为某一特定数据类型而非默认数据类型。例如,在通常发生单精度、双精度或整型运算的情况下,使用 CDec 强制执行小数运算。
当小数部分恰好为 0.5 时,CInt 和 CLng 函数总是会将其四舍五入为最接近的偶数值。例如,0.5 四舍五入为 0、1.5 四舍五入为 2。CInt 和 CLng 函数不同于 Fix 和 Fix 函数,Fix 和 Fix 函数会将小数部分截去而不是四舍五入。此外,Fix 和 Int 函数总是返回与传入的数据类型相同的值。
使用 IsDate 函数可以确定一个值是否可以转换成时间和日期。CDate 函数识别日期文字和时间文字,以及一些在可接受的日期范围内的数字。
CDate 依据系统的区域设置来识别日期的格式。必须以正确的顺序为区域设置提供日、月、年数据,否则可能无法正确解释日期。系统无法识别包含星期几的字符串(如"Wednesday")的长日期格式。
Date 数据类型始终包含日期和时间信息。为进行类型转换,Visual Basic .NET 将 1/1/1(公元 1 年 1 月 1 日)作为日期的中性值,将 00:00:00(午夜)作为时间的中性值。如果将 Date 值转换为字符串,CStr 的结果字符串中将不包含中性值。例如,如果将 #January 1, 0001 9:30:00# 转换为字符串,结果为"9:30:00 AM";日期信息被删除了。但是,日期信息仍然保留在原来的 Date 值中,并可以使用 DatePart 等函数恢复。
CType 函数还有第二个参数 typename,并将 expression 强制转换为 typename,这里 typename 可以是任何数据类型、结构、类或者接口。有关详细信息,请参见 CType 函数。
CBool 示例
本示例使用 CBool 函数将表达式转换为 Boolean 值。如果表达式的计算结果为非零值,CBool 将返回 True;否则返回 False。
Dim A, B, C As Integer
Dim Check As Boolean
A = 5
B = 5
Check = CBool(A = B) ' Check is set to True.
' ...
C = 0
Check = CBool(C) ' Check is set to False.
CByte 示例
本示例使用 CByte 函数将表达式转换为 Byte。
Dim MyDouble As Double
Dim MyByte As Byte
MyDouble = 125.5678
MyByte = CByte(MyDouble) ' MyByte is set to 126.
CChar 示例
本示例使用 CChar 函数将 String 表达式的第一个字符转换为 Char 类型。
Dim MyString As String
Dim MyChar As Char
MyString = "BCD" ' CChar converts only first character of string.
MyChar = CChar(MyString) ' MyChar is set to "B".
CChar 的输入参数必须是 String 数据类型。由于 CChar 不能接受数值数据类型,因此无法使用 CChar 将数字转换为字符。本示例获取一个表示代码数据点(字符代码)的数字,然后将其转换为对应的字符。它使用 InputBox 获取数字字符串,并使用 CInt 将该字符串转换为 Integer 类型,然后使用 ChrW 将该数字转换为 Char 类型。
Dim MyDigits As String ' Input string of digits to be converted.
Dim CodePoint As Integer ' Number to be represented as a character.
Dim MyChar As Char
MyDigits = InputBox("Enter code point of character:")
CodePoint = CInt(MyDigits) ' Convert entire string to Integer.
MyChar = ChrW(CodePoint) ' MyChar is set to Char value of code point.
CDate 示例
本示例使用 CDate 函数将字符串转换为 Date 值。通常,建议不要使用硬编码的日期和时间作为字符串(如下例所示)。而应使用日期文本和时间文本,如 #Feb 12、1969# 和 #4:45:23 PM#。
Dim MyDateString, MyTimeString As String
Dim MyDate, MyTime As Date
MyDateString = "February 12, 1969"
MyTimeString = "4:35:47 PM"
' ...
MyDate = CDate(MyDateString) ' Convert to Date data type.
MyTime = CDate(MyTimeString) ' Convert to Date data type.
CDbl 示例
本示例使用 CDbl 函数将表达式转换为 Double。
Dim MyDec As Decimal
Dim MyDouble As Double
MyDec = 234.456784D ' Literal type character D makes MyDec a Decimal.
MyDouble = CDbl(MyDec * 8.2D * 0.01D) ' Convert result to a Double.
CDec 示例
本示例使用 CDec 函数将数值转换为 Decimal。
Dim MyDouble As Double
Dim MyDecimal As Decimal
MyDouble = 10000000.0587
MyDecimal = CDec(MyDouble) ' Convert to Decimal.
CInt 示例
本示例使用 CInt 函数将一个值转换为 Integer。
Dim MyDouble As Double
Dim MyInt As Integer
MyDouble = 2345.5678
MyInt = CInt(MyDouble) ' MyInt is set to 2346.
CLng 示例
本示例使用 CLng 函数将多个值转换为 Long。
Dim MyDbl1, MyDbl2 As Double
Dim MyLong1, MyLong2 As Long
MyDbl1 = 25427.45
MyDbl2 = 25427.55
MyLong1 = CLng(MyDbl1) ' MyLong1 contains 25427.
MyLong2 = CLng(MyDbl2) ' MyLong2 contains 25428.
CObj 示例
本示例使用 CObj 函数将一个数值转换为 Object。Object 变量本身只包含一个四字节的指针,该指针指向赋给 Object 变量的 Double 值。
Dim MyDouble As Double
Dim MyObject As Object
MyDouble = 2.7182818284
MyObject = CObj(MyDouble) ' Double value is pointed to by MyObject.
CShort 示例
本示例使用 CShort 函数将一个数值转换为 Short。
Dim MyByte as Byte
Dim MyShort as Short
MyByte = 100
MyShort = CShort(MyByte) ' Convert to Short.
CSng 示例
本示例使用 CSng 函数将多个值转换为 Single。
Dim MyDouble1, MyDouble2 As Double
Dim MySingle1, MySingle2 As Single
MyDouble1 = 75.3421105
MyDouble2 = 75.3421567
MySingle1 = CSng(MyDouble1) ' MySingle1 is set to 75.34211.
MySingle2 = CSng(MyDouble2) ' MySingle2 is set to 75.34216.
CStr 示例
本示例使用 CStr 函数将一个数值转换为字符串。
Dim MyDouble As Double
Dim MyString As String
MyDouble = 437.324
MyString = CStr(MyDouble) ' MyString is set to "437.324".
本示例使用 CStr 函数将多个 Date 值转换为 String 值。
Dim MyDate As Date
Dim MyString As String
' ...
MyDate = #February 12, 1969 00:00:00# ' INVALID format.
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' ...
MyDate = #2/12/69 00:00:00# ' Time is midnight.
' The neutral time value of 00:00:00 is suppressed in the conversion.
MyString = CStr(MyDate) ' MyString is set to "2/12/1969".
' ...
MyDate = #2/12/69 00:00:01# ' Time is one second past midnight.
' The time component becomes part of the converted value.
MyString = CStr(MyDate) ' MyString is set to "2/12/1969 12:00:01 AM".
CStr 始终以符合当前区域设置的标准短格式呈现 Date 值,如"6/15/2003 4:35:47 PM"。
msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vblr7/html/vagrptypeconversion.asp
Visual Basic 语言参考 ------类型转换函数 |
Author:咖啡虫 PublishTime:2005-10-23 |
这些函数采用内联方式编译,即转换代码是计算表达式的代码的一部分。因为不需要调用完成转换的过程,因此执行速度更快。每个函数都将表达式强制转换为一种特定的数据类型。 CBool(expression) CByte(expression) CChar(expression) CDate(expression) CDbl(expression) CDec(expression) CInt(expression) CLng(expression) CObj(expression) CShort(expression) CSng(expression) CStr(expression) 各部分说明 expression 必选项。任何 String 表达式或数值表达式。 返回类型 函数名称决定了返回类型,如下表所示。 函数名称 返回类型 expression 参数范围 CBool Boolean 任何有效的 String 或数值表达式。 CByte Byte 0 到 255,舍入小数部分。 CChar Char 任何有效的 String 表达式;取值范围为 0 到 65535。 CDate Date 任何有效的日期和时间表示法。 CDbl Double 负值取值范围为 -1.79769313486231E+308 到 -4.94065645841247E-324;正值取值范围为 4.94065645841247E-324 到 1.79769313486231E+308。 CDec Decimal 对于零变比数值,即无小数位数值,为 +/-79,228,162,514,264,337,593,543,950,335。对于具有 28 位小数位的数字,范围是 +/-7.9228162514264337593543950335。最小的非零数是 0.0000000000000000000000000001。 CInt Integer -2,147,483,648 到 2,147,483,647,舍入小数部分。 CLng Long -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,舍入小数部分。 CObj Object 任何有效的表达式。 CShort Short -32,768 到 32,767,舍入小数部分。 CSng Single 负值的取值范围为 -3.402823E+38 到 -1.401298E-45;正值的取值范围为 1.401298E-45 到 3.402823E+38。 CStr String CStr 的返回值由参数 expression 决定。请参见 CStr 返回值。 备注 如果传递给函数的 expression 超出要转换为的数据类型的范围,将发生错误。 通常,可以使用数据类型转换功能将某些操作的结果强制转换为某一特定数据类型而非默认数据类型。例如,在通常发生单精度、双精度或整型运算的情况下,使用 CDec 强制执行小数运算。 当小数部分恰好为 0.5 时,CInt 和 CLng 函数总是会将其四舍五入为最接近的偶数值。例如,0.5 四舍五入为 0、1.5 四舍五入为 2。CInt 和 CLng 函数不同于 Fix 和 Fix 函数,Fix 和 Fix 函数会将小数部分截去而不是四舍五入。此外,Fix 和 Int 函数总是返回与传入的数据类型相同的值。 使用 IsDate 函数可以确定一个值是否可以转换成时间和日期。CDate 函数识别日期文字和时间文字,以及一些在可接受的日期范围内的数字。 CDate 依据系统的区域设置来识别日期的格式。必须以正确的顺序为区域设置提供日、月、年数据,否则可能无法正确解释日期。系统无法识别包含星期几的字符串(如“Wednesday”)的长日期格式。 Date 数据类型始终包含日期和时间信息。为进行类型转换,Visual Basic .NET 将 1/1/1(公元 1 年 1 月 1 日)作为日期的中性值,将 00:00:00(午夜)作为时间的中性值。如果将 Date 值转换为字符串,CStr 的结果字符串中将不包含中性值。例如,如果将 #January 1, 0001 9:30:00# 转换为字符串,结果为“9:30:00 AM”;日期信息被删除了。但是,日期信息仍然保留在原来的 Date 值中,并可以使用 DatePart 等函数恢复。 CType 函数还有第二个参数 typename,并将 expression 强制转换为 typename,这里 typename 可以是任何数据类型、结构、类或者接口。有关详细信息,请参见 CType 函数。 CBool 示例 本示例使用 CBool 函数将表达式转换为 Boolean 值。如果表达式的计算结果为非零值,CBool 将返回 True;否则返回 False。 Dim A, B, C As Integer Dim Check As Boolean A = 5 B = 5 Check = CBool(A = B) ' Check is set to True. ' ... C = 0 Check = CBool(C) ' Check is set to False. CByte 示例 本示例使用 CByte 函数将表达式转换为 Byte。 Dim MyDouble As Double Dim MyByte As Byte MyDouble = 125.5678 MyByte = CByte(MyDouble) ' MyByte is set to 126. CChar 示例 本示例使用 CChar 函数将 String 表达式的第一个字符转换为 Char 类型。 Dim MyString As String Dim MyChar As Char MyString = "BCD" ' CChar converts only first character of string. MyChar = CChar(MyString) ' MyChar is set to "B". CChar 的输入参数必须是 String 数据类型。由于 CChar 不能接受数值数据类型,因此无法使用 CChar 将数字转换为字符。本示例获取一个表示代码数据点(字符代码)的数字,然后将其转换为对应的字符。它使用 InputBox 获取数字字符串,并使用 CInt 将该字符串转换为 Integer 类型,然后使用 ChrW 将该数字转换为 Char 类型。 Dim MyDigits As String ' Input string of digits to be converted. Dim CodePoint As Integer ' Number to be represented as a character. Dim MyChar As Char MyDigits = InputBox("Enter code point of character:") CodePoint = CInt(MyDigits) ' Convert entire string to Integer. MyChar = ChrW(CodePoint) ' MyChar is set to Char value of code point. CDate 示例 本示例使用 CDate 函数将字符串转换为 Date 值。通常,建议不要使用硬编码的日期和时间作为字符串(如下例所示)。而应使用日期文本和时间文本,如 #Feb 12、1969# 和 #4:45:23 PM#。 Dim MyDateString, MyTimeString As String Dim MyDate, MyTime As Date MyDateString = "February 12, 1969" MyTimeString = "4:35:47 PM" ' ... MyDate = CDate(MyDateString) ' Convert to Date data type. MyTime = CDate(MyTimeString) ' Convert to Date data type. CDbl 示例 本示例使用 CDbl 函数将表达式转换为 Double。 Dim MyDec As Decimal Dim MyDouble As Double MyDec = 234.456784D ' Literal type character D makes MyDec a Decimal. MyDouble = CDbl(MyDec * 8.2D * 0.01D) ' Convert result to a Double. CDec 示例 本示例使用 CDec 函数将数值转换为 Decimal。 Dim MyDouble As Double Dim MyDecimal As Decimal MyDouble = 10000000.0587 MyDecimal = CDec(MyDouble) ' Convert to Decimal. CInt 示例 本示例使用 CInt 函数将一个值转换为 Integer。 Dim MyDouble As Double Dim MyInt As Integer MyDouble = 2345.5678 MyInt = CInt(MyDouble) ' MyInt is set to 2346. CLng 示例 本示例使用 CLng 函数将多个值转换为 Long。 Dim MyDbl1, MyDbl2 As Double Dim MyLong1, MyLong2 As Long MyDbl1 = 25427.45 MyDbl2 = 25427.55 MyLong1 = CLng(MyDbl1) ' MyLong1 contains 25427. MyLong2 = CLng(MyDbl2) ' MyLong2 contains 25428. CObj 示例 本示例使用 CObj 函数将一个数值转换为 Object。Object 变量本身只包含一个四字节的指针,该指针指向赋给 Object 变量的 Double 值。 Dim MyDouble As Double Dim MyObject As Object MyDouble = 2.7182818284 MyObject = CObj(MyDouble) ' Double value is pointed to by MyObject. CShort 示例 本示例使用 CShort 函数将一个数值转换为 Short。 Dim MyByte as Byte Dim MyShort as Short MyByte = 100 MyShort = CShort(MyByte) ' Convert to Short. CSng 示例 本示例使用 CSng 函数将多个值转换为 Single。 Dim MyDouble1, MyDouble2 As Double Dim MySingle1, MySingle2 As Single MyDouble1 = 75.3421105 MyDouble2 = 75.3421567 MySingle1 = CSng(MyDouble1) ' MySingle1 is set to 75.34211. MySingle2 = CSng(MyDouble2) ' MySingle2 is set to 75.34216. CStr 示例 本示例使用 CStr 函数将一个数值转换为字符串。 Dim MyDouble As Double Dim MyString As String MyDouble = 437.324 MyString = CStr(MyDouble) ' MyString is set to "437.324". 本示例使用 CStr 函数将多个 Date 值转换为 String 值。 Dim MyDate As Date Dim MyString As String ' ... MyDate = #February 12, 1969 00:00:00# ' INVALID format. ' Date literals must be in the format #m/d/yyyy# or they are invalid. ' ... MyDate = #2/12/69 00:00:00# ' Time is midnight. ' The neutral time value of 00:00:00 is suppressed in the conversion. MyString = CStr(MyDate) ' MyString is set to "2/12/1969". ' ... MyDate = #2/12/69 00:00:01# ' Time is one second past midnight. ' The time component becomes part of the converted value. MyString = CStr(MyDate) ' MyString is set to "2/12/1969 12:00:01 AM". CStr 始终以符合当前区域设置的标准短格式呈现 Date 值,如“6/15/2003 4:35:47 PM”。 msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vblr7/html/vagrptypeconversion.asp |