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 函式會在它無法辨認成數字部分的第一個字元處,停止讀取字串。符號和字元常被視為數值的一部分,例如錢幣符號和逗號,因此往往無法辨認。儘管如此,函式還是能夠辨識基數 (Radix) 前置碼 &O (八進位) 和 &H (十六進位)。空白、定位鍵與換行字元也都會從引數中除去。
下列呼叫會傳回 1615198 的值。
Val(" 1615 198th Street N.E.")
下列呼叫會傳回十進位值 -1。
Val("&HFFFF")
注意事項: |
---|
Val 函式只會將句號 (.) 辨認為有效的十進位分隔符號。當在如國際性應用程式中需要使用不同的十進位分隔符號時,請改用 CDbl 或 CInt 以將字串轉換為數字。若要將特定文化特性的某個數字之字串表示轉換成數值,請使用該數字型別的 Parse(String, IFormatProvider) 方法。例如,將字串轉換成 Double 時,可使用 Double.Parse。 |
範例
下列範例會使用 Val 函式來傳回每個字串中所含的數字。Val 會停止在第一個字元處的轉換,因其無法解譯成數字位數、數字修飾詞 (Modifier)、數字標點符號或泛空白字元 (White Space)。
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")
需求
命名空間 (Namespace)︰Microsoft.VisualBasic
**模組︰**Conversion
組件 (Assembly):Visual Basic Runtime Library (在 Microsoft.VisualBasic.dll 中)
請參閱
參考
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2008 年 7 月 |
在「例外狀況」一節中加入注意事項,說明 InvalidCastException 例外狀況會在什麼情況下發生。 |
客戶回函。 |