2009-07-23 10 views
17

文字列をダブルに変換できるかどうかをVBで調べる効率的な方法はありますか?文字列をDoubleに変換する - VB

私は現在、文字列をdoubleに変換し、例外をスローするかどうかを調べることによってこれを行っています。しかし、これは私のアプリケーションを遅くしているようだ。

Try 
    ' if number then format it. 
    current = CDbl(x) 
    current = Math.Round(current, d) 
    Return current 
Catch ex As System.InvalidCastException 
    ' item is not a number, do not format... leave as a string 
    Return x 
End Try 
+0

vb.net? –

答えて

20

は、.NET 1.1/2.0/3.0/3.5/4.0/4.5

+0

他のTryParseメソッドと異なり、Double.TryParseは少なくとも.NET 1.1以来存在しています。http://msdn.microsoft.com/en-us/library/system.double.tryparse%28v=vs.71%29.aspx –

11
Dim text As String = "123.45" 
Dim value As Double 
If Double.TryParse(text, value) Then 
    ' text is convertible to Double, and value contains the Double value now 
Else 
    ' Cannot convert text to Double 
End If 
16

VB.NETのサンプルコードを使用している場合Double.TryParse()を見てみ

Dim A as String = "5.3" 
Dim B as Double 

B = CDbl(Val(A)) '// Val do hard work 

'// Get output 
MsgBox (B) '// Output is 5,3 Without Val result is 53.0 
+1

これは文字列を倍精度に変換していました。私はConvert.ToDouble、cdblとDouble.TryParseを試してみました。しかし実際に仕事をするにはVal()が必要でした。 – bendecko

3

国際バージョン:

Public Shared Function GetDouble(ByVal doublestring As String) As Double 
     Dim retval As Double 
     Dim sep As String = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator 

     Double.TryParse(Replace(Replace(doublestring, ".", sep), ",", sep), retval) 
     Return retval 
    End Function 

    ' NULLABLE VERSION: 
    Public Shared Function GetDoubleNullable(ByVal doublestring As String) As Double? 
     Dim retval As Double 
     Dim sep As String = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator 

     If Double.TryParse(Replace(Replace(doublestring, ".", sep), ",", sep), retval) Then 
      Return retval 
     Else 
      Return Nothing 
     End If 
    End Function 

結果:私が思う

 ' HUNGARIAN REGIONAL SETTINGS (NumberDecimalSeparator: ,) 

     ' Clean Double.TryParse 
     ' ------------------------------------------------- 
     Double.TryParse("1.12", d1)  ' Type: DOUBLE  Value: d1 = 0.0 
     Double.TryParse("1,12", d2)  ' Type: DOUBLE  Value: d2 = 1.12 
     Double.TryParse("abcd", d3)  ' Type: DOUBLE  Value: d3 = 0.0 

     ' GetDouble() method 
     ' ------------------------------------------------- 
     d1 = GetDouble("1.12")   ' Type: DOUBLE  Value: d1 = 1.12 
     d2 = GetDouble("1,12")   ' Type: DOUBLE  Value: d2 = 1.12 
     d3 = GetDouble("abcd")   ' Type: DOUBLE  Value: d3 = 0.0 

     ' Nullable version - GetDoubleNullable() method 
     ' ------------------------------------------------- 
     d1n = GetDoubleNullable("1.12") ' Type: DOUBLE? Value: d1n = 1.12 
     d2n = GetDoubleNullable("1,12") ' Type: DOUBLE? Value: d2n = 1.12 
     d3n = GetDoubleNullable("abcd") ' Type: DOUBLE? Value: d3n = Nothing 
関連する問題