Val 函数
更新: 2008 年 7 月
以适当类型的数值形式返回包含于字符串内的数字。
Public Overloads Function Val(ByVal InputStr As String) As Double
' -or-
Public Overloads Function Val(ByVal Expression As Object) As Double
' -or-
Public Overloads Function Val(ByVal Expression As Char) As Integer
参数
- Expression, InputStr
必需。任何有效的 String 表达式、Object 变量或 Char 值。如果 Expression 是 Object 类型,它的值必须可以转换为 String,否则,将出现 ArgumentException 错误。
异常
异常类型 |
错误号 |
条件 |
---|---|---|
InputStr 太大。 |
||
Object 类型表达式不能转换为 String。 |
如果正在升级使用非结构化错误处理方式的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象)比较错误号。)然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述 替换这种错误控制。
说明: |
---|
在响应某些不常见的数字格式时,可能会引发 InvalidCastException 异常(错误号 13)。有关此错误的更多信息,请参见类型不匹配 (Visual Basic)。例如,下面的代码引发该异常。 ' These examples cause run-time errors. 'Console.WriteLine(Val("1.34%")) 'Console.WriteLine(Val("1.34&")) 编译器会捕获格式设置为 Double 的数字与 Integer 和 Long 类型字符之间的冲突(如果该冲突未隐藏在字符串中)。 ' These examples cause compiler errors. 'Dim m = 1.34% 'Dim n = 1.34& |
备注
Val 函数在发现第一个不能将其识别为数字的字符时,将停止读入字符串。那些通常被认为是数值的一部分的符号和字符,例如美元符号与逗号,都不能被识别。但是该函数可以识别基数前缀 &O(八进制)和 &H(十六进制)。空白、制表符和换行符都会从参数中排除。
下面的调用返回值 1615198。
Val(" 1615 198th Street N.E.")
下面的调用返回十进制值 -1。
Val("&HFFFF")
说明: |
---|
Val 函数只将句点 (.) 识别为有效的小数点分隔符。当使用不同的小数点分隔符时(如在国际应用程序中),则应使用 CDbl 或 CInt 将字符串转换为数字。若要将特定区域中的数字的字符串表示形式转换为数值,请使用 Numeric 类型的 Parse(String, IFormatProvider) 方法。例如,将字符串转换为 Double 时,使用 Double.Parse。 |
示例
下面的示例使用 Val 函数返回每个字符串中包含的数字。遇到第一个不能解释为数位、数字修饰符、数字标点或空格的字符时,Val 将停止转换。
Dim valResult As Double
' The following line of code sets valResult to 2457.
valResult = Val("2457")
' The following line of code sets valResult to 2457.
valResult = Val(" 2 45 7")
' The following line of code sets valResult to 24.
valResult = Val("24 and 57")
要求
**模块:**Conversion
**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)
请参见
参考
修订记录
日期 |
修订记录 |
原因 |
---|---|---|
2008 年 7 月 |
在“异常”一节中增加了说明以介绍何时会发生 InvalidCastException 异常。 |
客户反馈。 |