Converti stringa in doppia – VB

Esiste un metodo efficiente in VB per verificare se una stringa può essere convertita in una doppia?

In questo momento sto provando a convertire la stringa in una doppia e poi a vedere se genera un’eccezione. Ma questo sembra rallentare la mia domanda.

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 

Prova a guardare Double.TryParse () se utilizzi .NET 1.1 / 2.0 / 3.0 / 3.5 / 4.0 / 4.5

Codice di esempio VB.NET

 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 
 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 

Le versioni internazionali:

  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 

risultati:

  ' 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