Export (0) Print
Expand All

Double.TryParse Method (String, Double)

Converts the string representation of a number to its double-precision floating-point number equivalent. A return value indicates whether the conversion succeeded or failed.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

'Declaration
Public Shared Function TryParse ( _
	s As String, _
	<OutAttribute> ByRef result As Double _
) As Boolean
'Usage
Dim s As String
Dim result As Double
Dim returnValue As Boolean

returnValue = Double.TryParse(s, result)
public static boolean TryParse (
	String s, 
	/** @attribute OutAttribute() */ /** @ref */ double result
)
Not applicable.

Parameters

s

A string containing a number to convert.

result

When this method returns, contains the double-precision floating-point number equivalent to the s parameter, if the conversion succeeded, or zero if the conversion failed. The conversion fails if the s parameter is a null reference (Nothing in Visual Basic), is not a number in a valid format, or represents a number less than MinValue or greater than MaxValue. This parameter is passed uninitialized.

Return Value

true if s was converted successfully; otherwise, false.

The TryParse method is like the Parse(String) method, except the TryParse method does not throw an exception if the conversion fails.

The s parameter can contain PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol, or a string of the form:

[ws][sign]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws]

Optional items are framed in square brackets ([ and ]). Items containing the term "digits" consist of a series of numeric characters ranging from 0 to 9.

Element

Description

ws

A series of white-space characters.

sign

A negative sign or positive sign symbol.

integral-digits

A series of digits specifying the integral part of the number. Runs of integral-digits can be partitioned by a group-separator symbol. (For example, in some cultures a comma (,) separates groups of thousands.) Integral-digits can be absent if there are fractional-digits.

.

A culture-specific decimal point symbol.

fractional-digits

A series of digits specifying the fractional part of the number.

E

An uppercase or lowercase character 'e', indicating exponential (scientific) notation.

exponential-digits

A series of digits specifying an exponent.

For more information about numeric formats, see [<topic://cpConFormattingOverview>].

If a separator is encountered in the s parameter during a parse operation, and the applicable currency or number decimal and group separators are the same, the parse operation assumes that the separator is a decimal separator rather than a group separator. For more information about separators, see CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, and NumberGroupSeparator.

The following code example demonstrates overloads of the TryParse method for several base types, as well as the System.DateTime.TryParseExact method.

' This example demonstrates overloads of the TryParse method for
' several base types, and the TryParseExact method for DateTime.
' In most cases, this example uses the most complex overload; that is, the overload 
' with the most parameters for a particular type. If a complex overload specifies 
' null (Nothing in Visual Basic) for the IFormatProvider parameter, formatting 
' information is obtained from the culture associated with the current thread. 
' If a complex overload specifies the style parameter, the parameter value is 
' the default value used by the equivalent simple overload.

Imports System
Imports System.Globalization

Class Sample
   Public Shared Sub Main()
      Dim result As Boolean
      Dim ci As CultureInfo
      Dim nl As String = Environment.NewLine
      Dim msg1 As String = _
                 "This example demonstrates overloads of the TryParse method for{0}" & _
                 "several base types, as well as the TryParseExact method for DateTime.{0}"
      Dim msg2 As String = "Non-numeric types:{0}"
      Dim msg3 As String = "{0}Numeric types:{0}"
      Dim msg4 As String = "{0}The following types are not CLS-compliant:{0}"
      
      ' Non-numeric types.
      Dim booleanVal As [Boolean]
      Dim charVal As [Char]
      Dim datetimeVal As DateTime
      
      ' Numeric types.
      Dim byteVal As [Byte]
      Dim int16Val As Int16
      Dim int32Val As Int32
      Dim int64Val As Int64
      Dim decimalVal As [Decimal]
      Dim singleVal As [Single]
      Dim doubleVal As [Double]
      
      ' The following types are not CLS-compliant.
      Dim sbyteVal As SByte
      Dim uint16Val As UInt16
      Dim uint32Val As UInt32
      Dim uint64Val As UInt64
      '
      Console.WriteLine(msg1, nl)
      
      ' Non-numeric types:
      Console.WriteLine(msg2, nl)
      ' DateTime
      ' TryParse:
      ' Assume current culture is en-US, and dates of the form: MMDDYYYY.
      result = DateTime.TryParse("7/4/2004 12:34:56", datetimeVal)
      Show(result, "DateTime #1", datetimeVal.ToString())
      
      ' Use fr-FR culture, and dates of the form: DDMMYYYY.
      ci = New CultureInfo("fr-FR")
      result = DateTime.TryParse("4/7/2004 12:34:56", ci, DateTimeStyles.None, datetimeVal)
      Show(result, "DateTime #2", datetimeVal.ToString())
      
      ' TryParseExact:
      ' Use fr-FR culture. The format, "G", is short date and long time.
      result = DateTime.TryParseExact("04/07/2004 12:34:56", "G", ci, DateTimeStyles.None, datetimeVal)
      Show(result, "DateTime #3", datetimeVal.ToString())
      
      ' Assume en-US culture.
      Dim dateFormats As String() =  {"f", "F", "g", "G"}
      result = DateTime.TryParseExact("7/4/2004 12:34:56 PM", dateFormats, Nothing, DateTimeStyles.None, datetimeVal)
      Show(result, "DateTime #4", datetimeVal.ToString())
      
      Console.WriteLine()
      ' Boolean
      result = [Boolean].TryParse("true", booleanVal)
      Show(result, "Boolean", booleanVal.ToString())
      ' Char
      result = [Char].TryParse("A", charVal)
      Show(result, "Char", charVal.ToString())
      
      ' Numeric types:
      Console.WriteLine(msg3, nl)
      ' Byte
      result = [Byte].TryParse("1", NumberStyles.Integer, Nothing, byteVal)
      Show(result, "Byte", byteVal.ToString())
      ' Int16
      result = Int16.TryParse("-2", NumberStyles.Integer, Nothing, int16Val)
      Show(result, "Int16", int16Val.ToString())
      ' Int32
      result = Int32.TryParse("3", NumberStyles.Integer, Nothing, int32Val)
      Show(result, "Int32", int32Val.ToString())
      ' Int64
      result = Int64.TryParse("4", NumberStyles.Integer, Nothing, int64Val)
      Show(result, "Int64", int64Val.ToString())
      ' Decimal
      result = [Decimal].TryParse("-5.5", NumberStyles.Number, Nothing, decimalVal)
      Show(result, "Decimal", decimalVal.ToString())
      ' Single
      result = [Single].TryParse("6.6", NumberStyles.Float Or NumberStyles.AllowThousands, Nothing, singleVal)
      Show(result, "Single", singleVal.ToString())
      ' Double
      result = [Double].TryParse("-7", NumberStyles.Float Or NumberStyles.AllowThousands, Nothing, doubleVal)
      Show(result, "Double", doubleVal.ToString())
      
      ' Use the simple Double.TryParse overload, but specify an invalid value.
      result = [Double].TryParse("abc", doubleVal)
      Show(result, "Double #2", doubleVal.ToString())
      '
      Console.WriteLine(msg4, nl)
      ' SByte
      result = SByte.TryParse("-8", NumberStyles.Integer, Nothing, sbyteVal)
      Show(result, "SByte", sbyteVal.ToString())
      ' UInt16
      result = UInt16.TryParse("9", NumberStyles.Integer, Nothing, uint16Val)
      Show(result, "UInt16", uint16Val.ToString())
      ' UInt32
      result = UInt32.TryParse("10", NumberStyles.Integer, Nothing, uint32Val)
      Show(result, "UInt32", uint32Val.ToString())
      ' UInt64
      result = UInt64.TryParse("11", NumberStyles.Integer, Nothing, uint64Val)
      Show(result, "UInt64", uint64Val.ToString())
   End Sub 'Main
   
   
   Protected Shared Sub Show(parseResult As Boolean, typeName As String, parseValue As String)
      Dim msgSuccess As String = "Parse for {0} = {1}"
      Dim msgFailure As String = "** Parse for {0} failed. Invalid input."
      '
      If parseResult = True Then
         Console.WriteLine(msgSuccess, typeName, parseValue)
      Else
         Console.WriteLine(msgFailure, typeName)
      End If
   End Sub 'Show
End Class 'Sample '
'This example produces the following results:
'
'This example demonstrates overloads of the TryParse method for
'several base types, as well as the TryParseExact method for DateTime.
'
'Non-numeric types:
'
'Parse for DateTime #1 = 7/4/2004 12:34:56 PM
'Parse for DateTime #2 = 7/4/2004 12:34:56 PM
'Parse for DateTime #3 = 7/4/2004 12:34:56 PM
'Parse for DateTime #4 = 7/4/2004 12:34:56 PM
'
'Parse for Boolean = True
'Parse for Char = A
'
'Numeric types:
'
'Parse for Byte = 1
'Parse for Int16 = -2
'Parse for Int32 = 3
'Parse for Int64 = 4
'Parse for Decimal = -5.5
'Parse for Single = 6.6
'Parse for Double = -7
'** Parse for Double #2 failed. Invalid input.
'
'The following types are not CLS-compliant:
'
'Parse for SByte = -8
'Parse for UInt16 = 9
'Parse for UInt32 = 10
'Parse for UInt64 = 11
'

// This example demonstrates overloads of the TryParse method for
// several base types, and the TryParseExact method for DateTime.
// In most cases, this example uses the most complex overload; that is, 
// the overload with the most parameters for a particular type. If a 
// complex overload specifies null (Nothing in Visual Basic) for the 
// IFormatProvider parameter, formatting information is obtained from 
// the culture associated with the current thread. If a complex overload 
// specifies the style parameter, the parameter value is the default value 
// used by the equivalent simple overload.

import System.*;
import System.Globalization.*;

class Sample
{
    public static void main(String[] args)
    {
        boolean result;
        CultureInfo ci = null;
        String nl = Environment.get_NewLine();
        String msg1 = "This example demonstrates overloads of the TryParse " 
            + "method for{0}several base types, as well as the TryParseExact " 
            + "method for DateTime.{0}";
        String msg2 = "Non-numeric types:{0}";
        String msg3 = "{0}Numeric types:{0}";
        String msg4 = "{0}The following types are not CLS-compliant:{0}";
        // Non-numeric types.
        System.Boolean booleanVal = (System.Boolean)false;
        System.Char charVal = (System.Char)0;
        DateTime dateTimeVal = System.DateTime.get_Now();
        // Numeric types.
        Byte byteVal = null;
        Int16 int16Val = (Int16)0;
        Int32 int32Val = (Int32)0;
        Int64 int64Val = (Int64)0;
        Decimal decimalVal = new Decimal(0);
        Single singleVal = (Single)0;
        //Double doubleVal = new Double(0);
        double doubleVal = 0;
        // The following types are not CLS-compliant.
        SByte sByteVal = (System.SByte)0;
        UInt16 uInt16Val = (UInt16)0;
        UInt32 uInt32Val = (UInt32)0;
        UInt64 uInt64Val = (UInt64)0;
        //
        Console.WriteLine(msg1, nl);
        // Non-numeric types:
        Console.WriteLine(msg2, nl);
        // DateTime
        // TryParse:
        // Assume current culture is en-US, and dates of the form: MMDDYYYY.
        result = DateTime.TryParse("7/4/2004 12:34:56", dateTimeVal);
        Show(result, "DateTime #1", dateTimeVal.ToString());
        // Use fr-FR culture, and dates of the form: DDMMYYYY.
        ci = new CultureInfo("fr-FR");
        result = DateTime.TryParse("4/7/2004 12:34:56", ci,
            DateTimeStyles.None, dateTimeVal);
        Show(result, "DateTime #2", dateTimeVal.ToString());
        // TryParseExact:
        // Use fr-FR culture. The format, "G", is short date and long time.
        result = DateTime.TryParseExact("04/07/2004 12:34:56", "G", ci, 
            DateTimeStyles.None, dateTimeVal);
        Show(result, "DateTime #3", dateTimeVal.ToString());
        // Assume en-US culture.
        String dateFormats[] =  { "f", "F", "g", "G" };
        result = DateTime.TryParseExact("7/4/2004 12:34:56 PM", dateFormats, 
            null, DateTimeStyles.None, dateTimeVal);
        Show(result, "DateTime #4", dateTimeVal.ToString());

        Console.WriteLine();
        // Boolean
        boolean tempBooleanVal = System.Convert.ToBoolean(booleanVal);
        result = System.Boolean.TryParse("true",/**@out*/ tempBooleanVal);
        Show(result, "Boolean", System.Convert.ToString(tempBooleanVal));
        // Char
        char tempCharVal = System.Convert.ToChar(charVal);
        result = Char.TryParse("A", /**@out*/tempCharVal);
        Show(result, "Char", System.Convert.ToString(tempCharVal));
        // Numeric types:
        Console.WriteLine(msg3, nl);
        // Byte
        ubyte tempByteVal = System.Convert.ToByte(byteVal);
        result = System.Byte.TryParse("1", NumberStyles.Integer, null,
            /**@out*/tempByteVal);
        Show(result, "Byte", System.Convert.ToString(tempByteVal));
        // Int16
        short tempInt16Val = System.Convert.ToInt16(int16Val);
        result = Int16.TryParse("-2", NumberStyles.Integer, null,
            /**@out*/tempInt16Val);
        Show(result, "Int16", System.Convert.ToString(tempInt16Val));
        // Int32
        int tempInt32Val = System.Convert.ToInt32(int32Val);
        result = Int32.TryParse("3", NumberStyles.Integer, null,
            /**@out*/tempInt32Val);
        Show(result, "Int32", System.Convert.ToString(tempInt32Val));
        // Int64
        long tempInt64Val = System.Convert.ToInt64(int64Val);
        result = Int64.TryParse("4", NumberStyles.Integer, null,
            /**@out*/tempInt64Val);
        Show(result, "Int64", System.Convert.ToString(tempInt64Val));
        // Decimal
        result = Decimal.TryParse("-5.5", NumberStyles.Number, null,
            /**@out*/decimalVal);
        Show(result, "Decimal", decimalVal.ToString());
        // Single
        float tempSingleVal = System.Convert.ToSingle(singleVal);
        result = Single.TryParse("6.6", NumberStyles.Float 
            | NumberStyles.AllowThousands, null, /**@out*/tempSingleVal);
        Show(result, "Single", System.Convert.ToString(tempSingleVal));
        // Double
        result = System.Double.TryParse("-7", NumberStyles.Float 
            | NumberStyles.AllowThousands, null, /**@out*/doubleVal);
        Show(result, "Double", System.Convert.ToString(doubleVal));
        // Use the simple Double.TryParse overload, but specify an invalid value.
        result = System.Double.TryParse("abc", doubleVal);
        Show(result, "Double #2", System.Convert.ToString(doubleVal));
        //
        Console.WriteLine(msg4, nl);
        // SByte
        byte tempSByteVal = System.Convert.ToSByte(sByteVal);
        result = SByte.TryParse("-8", NumberStyles.Integer, null,
            /**@out*/tempSByteVal);
        Show(result, "SByte", System.Convert.ToString(tempSByteVal));
        // UInt16
        result = UInt16.TryParse("9", NumberStyles.Integer, null,
            /**@out*/uInt16Val);
        Show(result, "UInt16", uInt16Val.ToString());
        // UInt32
        result = UInt32.TryParse("10", NumberStyles.Integer, null,
            /**@out*/uInt32Val);
        Show(result, "UInt32", uInt32Val.ToString());
        // UInt64
        result = UInt64.TryParse("11", NumberStyles.Integer, null,
            /**@out*/uInt64Val);
        Show(result, "UInt64", uInt64Val.ToString());
    } //main

    protected static void Show(boolean parseResult,
        String typeName, String parseValue)
    {
        String msgSuccess = "Parse for {0} = {1}";
        String msgFailure = "** Parse for {0} failed. Invalid input.";
        //
        if (parseResult == true) {
            Console.WriteLine(msgSuccess, typeName, parseValue);
        }
        else {
            Console.WriteLine(msgFailure, typeName);
        }
    } //Show
} //Sample 
 /*
This example produces the following results:

This example demonstrates overloads of the TryParse method for
several base types, as well as the TryParseExact method for DateTime.

Non-numeric types:

Parse for DateTime #1 = 7/4/2004 12:34:56 PM
Parse for DateTime #2 = 7/4/2004 12:34:56 PM
Parse for DateTime #3 = 7/4/2004 12:34:56 PM
Parse for DateTime #4 = 7/4/2004 12:34:56 PM

Parse for Boolean = True
Parse for Char = A

Numeric types:

Parse for Byte = 1
Parse for Int16 = -2
Parse for Int32 = 3
Parse for Int64 = 4
Parse for Decimal = -5.5
Parse for Single = 6.6
Parse for Double = -7
** Parse for Double #2 failed. Invalid input.

The following types are not CLS-compliant:

Parse for SByte = -8
Parse for UInt16 = 9
Parse for UInt32 = 10
Parse for UInt64 = 11
*/

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0

Community Additions

ADD
Show:
© 2014 Microsoft