每个函数将 表达式 强制到特定的 数据类型 。
语法
CBool ( 表达式 )
CByte ( 表达式 )
CCur ( 表达式 )
CDate ( 表达式 )
CDbl ( 表达式 )
CDec ( 表达式 )
CInt ( 表达式 )
CLng ( 表达式 )
CSng ( 表达式 )
CStr ( 表达式 )
CVar ( 表达式 )
所需的 表达式参数 是任何 字符串表达式 或 数值表达式 。
返回类型
函数名称确定返回类型,如下所示:
函数 |
返回类型 |
表达式 参数 的范围 |
---|---|---|
CBool |
布尔 |
任何有效的 字符串 或数值表达式。 |
CByte |
字节 |
0 到 255。 |
CCur |
货币 |
-922,337,203,685,477.5808 到 922,337,203,685,477.5807。 |
CDate |
日期 |
任何有效的日期表达式。 |
CDbl |
Double |
-1.79769313486231E308 到 -4.94065645841247E-324(负值);正值的 4.94065645841247E-324 到 1.79769313486232E308。 |
CDec |
Decimal |
+/-79,228,162,514,264,337,593,543,950,335(无小数位数的数字)。 对于具有 28 个小数位数的数字,范围为 +/-7.9228162514264337593543950335. 最小可能的非零数为 0.000000000000000000000000000001。 |
CInt |
整型 |
-32,768 到 32,767;分数是舍入的。 |
CLng |
长 |
-2,147,483,648 到 2,147,483,647;分数是舍入的。 |
CSng |
Single |
负值的 -3.402823E38 到 -1.401298E-45;正值 1.401298E-45 到 3.402823E38。 |
CStr |
String |
CStr 的返回取决于 表达式 参数。 |
CVar |
变量 |
与数字的 Double 范围相同。 对于非数值,范围与 String 相同。 |
备注
如果传递给函数的 表达式 超出了要转换为的数据类型的范围,则会发生错误。
通常,可以使用数据类型转换函数来记录代码,以显示某些操作的结果应表示为特定数据类型,而不是默认数据类型。 例如,在通常发生单精度、双精度或整数算术的情况下,使用 CCur 强制进行货币算术。
应使用数据类型转换函数而不是 Val 来提供从一种数据类型到另一种数据类型的国际感知转换。 例如,使用 CCur 时,会根据计算机的区域设置正确识别不同的小数分隔符、不同的千位分隔符和各种货币选项。
当小数部分正好为 0.5 时, CInt 和 CLng 始终将其舍入到最接近的偶数。 例如,0.5 舍入为 0,1.5 舍入为 2。 CInt 和 CLng 不同于 Fix 和 Int 函数,后者截断数字的小数部分而不是舍入。 此外, Fix 和 Int 始终返回与传入的类型相同的值。
使用 IsDate 函数确定是否可以将 日期 转换为日期或时间。 CDate 可识别日期文本和时间文本,以及属于可接受日期范围内的一些数字。 将数字转换为日期时,整数部分将转换为日期。 从午夜开始,数字的任何小数部分都转换为一天中的某个时间。
CDate 根据系统的 区域设置 设置识别日期格式。 如果以一种识别的日期设置以外的格式提供,则可能无法确定日、月和年的正确顺序。 此外,如果还包含星期几字符串,则无法识别长日期格式。
还提供了 CVDate 函数,以便与 Visual Basic 的早期版本兼容。 CVDate 函数的语法与 CDate 函数相同,但是,CVDate 返回一个 Variant 类型的子类型为 Date,而不是实际的 Date 类型。 由于现在存在内部 日期 类型,因此不再需要 CVDate。 通过将表达式转换为 Date, 然后将其分配给 Variant,可以实现相同的效果。 此方法与将所有其他内部类型转换为等效的 Variant 子类型一致。
注意: CDec 函数不返回离散数据类型;相反,它始终返回一个 Variant 类型的值已转换为 Decimal 子类型。
查询示例
Expression |
结果 |
---|---|
SELECT SalePrice,FinalPrice,CBool (SalePrice>FinalPrice) AS Expr1 FROM productSales; |
返回“SalePrice”、“FinalPrice”,并评估 SalePrice 是否大于最终价格。 如果为 true,则返回“-1”,如果为 false,则返回“0”。 |
SELECT ProductID、CByte (Quantity) AS Expr1 FROM productSales; |
返回“ProductID”,将“数量”字段中的值转换为字节格式,并在 Expr1“返回”ProductID“列中显示,将”Quantity“字段中的值转换为 Currency 格式,并在 Expr1 列中显示。 |
SELECT ProductID、CDate (DateofSale) AS Expr1 FROM productSales; |
返回“ProductID”,将“DateofSale”字段中的值转换为 Date 格式,并在 Expr1 列中显示。 |
SELECT ProductID、CDbl (折扣) AS Expr1 FROM productSales; |
返回“ProductID”,将“Discount”字段中的值转换为 Double 格式,并在 Expr1 列中显示。 |
SELECT ProductID、CInt (折扣) AS Expr1 FROM productSales; |
返回“ProductID”,将“Discount”字段中的值转换为整数格式,并在 Expr1 列中显示。 |
SELECT ProductID、CLng (折扣) AS Expr1 FROM productSales; |
返回“ProductID”,将“Discount”字段中的值转换为 Long 格式,并在 Expr1 列中显示。 |
SELECT ProductID、CSng (折扣) AS Expr1 FROM productSales; |
返回“ProductID”,将“Discount”字段中的值转换为“单一格式”,并在 Expr1 列中显示。 |
SELECT ProductID、CStr (折扣) AS Expr1 FROM productSales; |
返回“ProductID”,将“Discount”字段中的值转换为字符串格式,并在 Expr1 列中显示。 |
SELECT ProductID、CVar (折扣) AS Expr1 FROM productSales; |
返回“ProductID”,将“折扣”字段中的值转换为数字值的 Double,将非数值转换为 String。 |
VBA 示例
注意: 以下示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请参阅 访问 VBA 参考。
CBool 函数
此示例使用 CBool 函数将表达式转换为 布尔值。 如果表达式的计算结果为非零值, 则 CBool 返回 True;否则,返回 False。
Dim A, B, Check
A = 5: B = 5 ' Initialize variables.
Check = CBool(A = B) ' Check contains True.
A = 0 ' Define variable.
Check = CBool(A) ' Check contains False.
CByte 函数
此示例使用 CByte 函数将表达式转换为 Byte。
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.
CCur 函数
此示例使用 CCur 函数将表达式转换为 Currency。
Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2)
' Convert result of MyDouble * 2 (1086.429176) to a
' Currency (1086.4292).
CDate 函数
此示例使用 CDate 函数将字符串转换为 Date。 通常,不建议将日期和时间硬编码为字符串 (,如此示例中所示,建议不要) 。 请改用日期文本和时间文本,例如 #2/12/1969# 和 #4:45:23 PM#。
Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969"
' Convert to Date data type.
MyShortDate = CDate(MyDate)
MyTime = "4:35:47 PM"
' Convert to Date data type.
MyShortTime = CDate(MyTime)
CDbl 函数
此示例使用 CDbl 函数将表达式转换为 Double。
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' Convert result to a Double.
MyDouble = CDbl(MyCurr * 8.2 * 0.01)
CDec 函数
此示例使用 CDec 函数将数值转换为 Decimal。
Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal.
CInt 函数
此示例使用 CInt 函数将值转换为 Integer。
Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.
CLng 函数
此示例使用 CLng 函数将值转换为 Long。
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1)
' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2)
' MyLong2 contains 25428.
CSng 函数
此示例使用 CSng 函数将值转换为 Single。
Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)
' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2)
' MySingle2 contains 75.34216.
CStr 函数
此示例使用 CStr 函数将数值转换为 String。
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".
CVar 函数
此示例使用 CVar 函数将表达式转换为 Variant。
Dim MyInt, MyVar
MyInt = 4534 ' MyInt is an Integer.
MyVar = CVar(MyInt & "000")
' MyVar contains the string 4534000.