Bagikan melalui


Double.TryParse Metode

Definisi

Mengonversi representasi string dari angka ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

Overload

TryParse(String, IFormatProvider, Double)

Mencoba mengurai string ke dalam nilai.

TryParse(ReadOnlySpan<Char>, Double)

Mengonversi representasi rentang angka dalam gaya tertentu dan format khusus budaya ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

TryParse(String, Double)

Mengonversi representasi string dari angka ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Mencoba mengurai rentang karakter menjadi nilai.

TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Double)

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

TryParse(ReadOnlySpan<Byte>, Double)

Mencoba mengonversi rentang karakter UTF-8 yang berisi representasi string angka ke angka floating-point presisi ganda yang setara.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Double)

Mengonversi rentang karakter yang berisi representasi string angka dalam gaya tertentu dan format khusus budaya ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

TryParse(String, NumberStyles, IFormatProvider, Double)

Mengonversi representasi string angka dalam gaya tertentu dan format khusus budaya ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

Keterangan

Di .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity seperti yang diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk mewakili mengakibatkan kegagalan.

TryParse(String, IFormatProvider, Double)

Sumber:
Double.cs
Sumber:
Double.cs
Sumber:
Double.cs

Mencoba mengurai string ke dalam nilai.

public:
 static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result) = IParsable<double>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out double result);
static member TryParse : string * IFormatProvider * double -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Double) As Boolean

Parameter

s
String

String yang akan diurai.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang s.

result
Double

Ketika metode ini kembali, berisi hasil dari penguraian s yang berhasil atau nilai yang tidak terdefinisi pada kegagalan.

Mengembalikan

true jika s berhasil diurai; jika tidak, false.

Berlaku untuk

TryParse(ReadOnlySpan<Char>, Double)

Sumber:
Double.cs
Sumber:
Double.cs
Sumber:
Double.cs

Mengonversi representasi rentang angka dalam gaya tertentu dan format khusus budaya ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] double % result);
public static bool TryParse (ReadOnlySpan<char> s, out double result);
static member TryParse : ReadOnlySpan<char> * double -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Double) As Boolean

Parameter

s
ReadOnlySpan<Char>

Rentang karakter yang berisi representasi string dari angka yang akan dikonversi.

result
Double

Ketika metode ini kembali, berisi angka floating-point presisi ganda yang setara dengan nilai atau simbol numerik yang terkandung dalam parameter s, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika parameter snull atau kosong. Jika s adalah angka yang valid kurang dari Double.MinValue , resultNegativeInfinity. Jika adalah angka valid yang lebih besar dariDouble.MaxValue , . Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam result akan ditimpa.

Mengembalikan

true jika s berhasil dikonversi; jika tidak, false.

Keterangan

Di .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity seperti yang diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk mewakili mengakibatkan kegagalan.

Berlaku untuk

TryParse(String, Double)

Sumber:
Double.cs
Sumber:
Double.cs
Sumber:
Double.cs

Mengonversi representasi string dari angka ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] double % result);
public static bool TryParse (string s, out double result);
public static bool TryParse (string? s, out double result);
static member TryParse : string * double -> bool
Public Shared Function TryParse (s As String, ByRef result As Double) As Boolean

Parameter

s
String

String yang berisi angka yang akan dikonversi.

result
Double

Ketika metode ini kembali, berisi angka floating-point presisi ganda yang setara dengan parameter s, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika parameter snull atau Empty atau bukan angka dalam format yang valid. Ini juga gagal pada .NET Framework dan .NET Core 2.2 dan versi yang lebih lama jika s mewakili angka yang kurang dari Double.MinValue atau lebih besar dari Double.MaxValue. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam result akan ditimpa.

Mengembalikan

true jika s berhasil dikonversi; jika tidak, false.

Contoh

Contoh berikut menggunakan metode TryParse(String, Double) untuk mengonversi representasi string nilai numerik menjadi nilai Double. Ini mengasumsikan bahwa en-US adalah budaya saat ini.

using System;

public class Example
{
   public static void Main()
   {
      string[] values = { "1,643.57", "$1,643.57", "-1.643e6",
                          "-168934617882109132", "123AE6",
                          null, String.Empty, "ABCDEF" };
      double number;

      foreach (var value in values) {
         if (Double.TryParse(value, out number))
            Console.WriteLine("'{0}' --> {1}", value, number);
         else
            Console.WriteLine("Unable to parse '{0}'.", value);
      }
   }
}
// The example displays the following output:
//       '1,643.57' --> 1643.57
//       Unable to parse '$1,643.57'.
//       '-1.643e6' --> -1643000
//       '-168934617882109132' --> -1.68934617882109E+17
//       Unable to parse '123AE6'.
//       Unable to parse ''.
//       Unable to parse ''.
//       Unable to parse 'ABCDEF'.
open System

let values =
    [| "1,643.57"; "$1,643.57"; "-1.643e6"
       "-168934617882109132"; "123AE6"
       null; String.Empty; "ABCDEF" |]

for value in values do
    match Double.TryParse value with
    | true, number ->
        printfn $"'{value}' --> {number}"
    | _ ->
        printfn $"Unable to parse '{value}'."
// The example displays the following output:
//       '1,643.57' --> 1643.57
//       Unable to parse '$1,643.57'.
//       '-1.643e6' --> -1643000
//       '-168934617882109132' --> -1.68934617882109E+17
//       Unable to parse '123AE6'.
//       Unable to parse ''.
//       Unable to parse ''.
//       Unable to parse 'ABCDEF'.
Module Example
   Public Sub Main()
      Dim values() As String = { "1,643.57", "$1,643.57", "-1.643e6", 
                                "-168934617882109132", "123AE6", 
                                Nothing, String.Empty, "ABCDEF" }
      Dim number As Double
      
      For Each value In values
         If Double.TryParse(value, number) Then
            Console.WriteLine("'{0}' --> {1}", value, number)
         Else
            Console.WriteLine("Unable to parse '{0}'.", value)      
         End If   
      Next   
   End Sub
End Module
' The example displays the following output:
'       '1,643.57' --> 1643.57
'       Unable to parse '$1,643.57'.
'       '-1.643e6' --> -1643000
'       '-168934617882109132' --> -1.68934617882109E+17
'       Unable to parse '123AE6'.
'       Unable to parse ''.
'       Unable to parse ''.
'       Unable to parse 'ABCDEF'.

Keterangan

Di .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity seperti yang diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk mewakili mengakibatkan kegagalan.

Kelebihan beban ini berbeda dari metode Double.Parse(String) dengan mengembalikan nilai Boolean yang menunjukkan apakah operasi penguraian berhasil alih-alih mengembalikan nilai numerik yang diurai. Ini menghilangkan kebutuhan untuk menggunakan penanganan pengecualian untuk menguji FormatException jika s tidak valid dan tidak dapat berhasil diurai.

Parameter s dapat berisi NumberFormatInfo.PositiveInfinitySymbolbudaya saat ini , NumberFormatInfo.NegativeInfinitySymbol, NumberFormatInfo.NaNSymbol (perbandingan string peka huruf besar/kecil), atau string formulir:

[ws] [tanda tangan] [integral-digits,]integral-digits[.[ fractional-digits]][e[sign]exponential-digits][ws]

Elemen dalam tanda kurung siku bersifat opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
ws Serangkaian karakter spasi putih.
tanda tangan Tanda negatif atau simbol tanda positif.
digit integral Serangkaian karakter numerik mulai dari 0 hingga 9 yang menentukan bagian integral dari angka. Digit integral dapat tidak ada jika ada digit pecahan.
, Simbol pemisah grup khusus budaya.
. Simbol titik desimal khusus budaya.
digit pecahan Serangkaian karakter numerik mulai dari 0 hingga 9 yang menentukan bagian pecahan dari angka.
E Karakter huruf besar atau kecil 'e', yang menunjukkan notasi eksponensial (ilmiah).
digit eksponensial Serangkaian karakter numerik mulai dari 0 hingga 9 yang menentukan eksponen.

Untuk informasi selengkapnya tentang format numerik, lihat Tipe Pemformatan.

Parameter s ditafsirkan dengan menggunakan kombinasi bendera NumberStyles.Float dan NumberStyles.AllowThousands. Ini berarti bahwa ruang kosong dan ribuan pemisah diizinkan tetapi simbol mata uang tidak. Untuk secara eksplisit menentukan elemen (seperti simbol mata uang, ribuan pemisah, dan spasi putih) yang dapat ada di s, gunakan metode Double.TryParse(String, NumberStyles, IFormatProvider, Double) kelebihan beban.

Parameter s diurai menggunakan informasi pemformatan dalam objek NumberFormatInfo yang diinisialisasi untuk budaya sistem saat ini. Untuk informasi selengkapnya, lihat NumberFormatInfo.CurrentInfo. Untuk mengurai string menggunakan informasi pemformatan dari beberapa budaya tertentu lainnya, gunakan metode Double.TryParse(String, NumberStyles, IFormatProvider, Double) kelebihan beban.

Biasanya, jika Anda meneruskan metode Double.TryParse string yang dibuat dengan memanggil metode Double.ToString, nilai Double asli dikembalikan. Namun, karena hilangnya presisi, nilainya mungkin tidak sama. Selain itu, mencoba mengurai representasi string dari Double.MinValue atau Double.MaxValue gagal melakukan round-trip. Pada .NET Framework dan .NET Core 2.2 dan versi sebelumnya, ia melemparkan OverflowException. Pada .NET Core 3.0 dan versi yang lebih baru, ia mengembalikan Double.NegativeInfinity jika Anda mencoba mengurai MinValue atau Double.PositiveInfinity jika Anda mencoba mengurai MaxValue. Contoh berikut memberikan ilustrasi.

using System;

public class Example
{
   public static void Main()
   {
      string value;
      double number;

      value = Double.MinValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);

      value = Double.MaxValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);
   }
}
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.
open System

[<EntryPoint>]
let main _ = 
    let value = string Double.MinValue
    match Double.TryParse value with
    | true, number ->
        printfn $"{number}"
    | _ ->
        printfn $"{value} is outside the range of a Double."

    let value = string Double.MaxValue
    match Double.TryParse value with
    | true, number ->
        printfn $"{number}"
    | _ ->
        printfn $"{value} is outside the range of a Double."

    0
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.
Module Example
   Public Sub Main()
      Dim value As String
      Dim number As Double
      
      value = Double.MinValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
      
      value = Double.MaxValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
   End Sub
End Module
' The example displays the following output:
'    -1.79769313486232E+308 is outside the range of the Double type.
'    1.79769313486232E+308 is outside the range of the Double type.

Pada .NET Framework dan .NET Core 2.2 dan versi yang lebih lama, jika s berada di luar rentang jenis data Double, metode TryParse(String, Double) melempar OverflowException.

Pada .NET Core 3.0 dan versi yang lebih baru, tidak ada pengecualian yang dilemparkan ketika s berada di luar rentang jenis data Double. Dalam kebanyakan kasus, metode TryParse(String, Double) menghitung hasil Double.PositiveInfinity atau Double.NegativeInfinity. Namun, ada sekumpulan kecil nilai yang dianggap lebih dekat dengan nilai maksimum atau minimum Double daripada ke infinitas positif atau negatif. Dalam kasus tersebut, metode menghitung hasil Double.MaxValue atau Double.MinValue.

Jika pemisah ditemui dalam parameter s selama operasi penguraian, dan pemisah desimal dan grup sama, operasi penguraian mengasumsikan bahwa pemisah adalah pemisah desimal daripada pemisah grup. Untuk informasi selengkapnya tentang pemisah, lihat CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, dan NumberGroupSeparator.

Lihat juga

Berlaku untuk

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)

Sumber:
Double.cs
Sumber:
Double.cs

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result) = IUtf8SpanParsable<double>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out double result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * double -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Double) As Boolean

Parameter

utf8Text
ReadOnlySpan<Byte>

Rentang karakter UTF-8 untuk diurai.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang utf8Text.

result
Double

Saat dikembalikan, berisi hasil dari penguraian utf8Text yang berhasil atau nilai yang tidak terdefinisi pada kegagalan.

Mengembalikan

true jika utf8Text berhasil diurai; jika tidak, false.

Berlaku untuk

TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)

Sumber:
Double.cs
Sumber:
Double.cs
Sumber:
Double.cs

Mencoba mengurai rentang karakter menjadi nilai.

public:
 static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result) = ISpanParsable<double>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out double result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * double -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Double) As Boolean

Parameter

s
ReadOnlySpan<Char>

Rentang karakter untuk diurai.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang s.

result
Double

Ketika metode ini kembali, berisi hasil penguraian yang berhasil s, atau nilai yang tidak ditentukan pada kegagalan.

Mengembalikan

true jika s berhasil diurai; jika tidak, false.

Berlaku untuk

TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Double)

Sumber:
Double.cs
Sumber:
Double.cs

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result) = System::Numerics::INumberBase<double>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out double result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * double -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Double) As Boolean

Parameter

utf8Text
ReadOnlySpan<Byte>

Rentang karakter UTF-8 untuk diurai.

style
NumberStyles

Kombinasi bitwise dari gaya angka yang dapat ada di utf8Text.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang utf8Text.

result
Double

Saat dikembalikan, berisi hasil dari penguraian utf8Text yang berhasil atau nilai yang tidak terdefinisi pada kegagalan.

Mengembalikan

true jika utf8Text berhasil diurai; jika tidak, false.

Berlaku untuk

TryParse(ReadOnlySpan<Byte>, Double)

Sumber:
Double.cs
Sumber:
Double.cs

Mencoba mengonversi rentang karakter UTF-8 yang berisi representasi string angka ke angka floating-point presisi ganda yang setara.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] double % result);
public static bool TryParse (ReadOnlySpan<byte> utf8Text, out double result);
static member TryParse : ReadOnlySpan<byte> * double -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Double) As Boolean

Parameter

utf8Text
ReadOnlySpan<Byte>

Rentang karakter UTF-8 baca-saja yang berisi angka yang akan dikonversi.

result
Double

Ketika metode ini kembali, berisi angka floating-point presisi ganda yang setara dengan nilai numerik atau simbol yang terkandung dalam utf8Text jika konversi berhasil atau nol jika konversi gagal. Konversi gagal jika utf8TextEmpty atau tidak dalam format yang valid. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam hasil akan ditimpa.

Mengembalikan

true jika utf8Text berhasil dikonversi; jika tidak, false.

Berlaku untuk

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Double)

Sumber:
Double.cs
Sumber:
Double.cs
Sumber:
Double.cs

Mengonversi rentang karakter yang berisi representasi string angka dalam gaya tertentu dan format khusus budaya ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result);
public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result) = System::Numerics::INumberBase<double>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out double result);
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out double result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * double -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Double) As Boolean

Parameter

s
ReadOnlySpan<Char>

Rentang karakter baca-saja yang berisi angka yang akan dikonversi.

style
NumberStyles

Kombinasi bitwise dari nilai NumberStyles yang menunjukkan format syang diizinkan. Nilai umum yang ditentukan adalah Float dikombinasikan dengan AllowThousands.

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang s.

result
Double

Ketika metode ini mengembalikan dan jika konversi berhasil, berisi angka floating-point presisi ganda yang setara dengan nilai atau simbol numerik yang terkandung dalam s. Berisi nol jika konversi gagal. Konversi gagal jika parameter snull, rentang karakter kosong, atau bukan angka dalam format yang sesuai dengan style. Jika s adalah angka yang valid kurang dari Double.MinValue , resultNegativeInfinity. Jika adalah angka valid yang lebih besar dariDouble.MaxValue , . Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam result akan ditimpa.

Mengembalikan

true jika s berhasil dikonversi; jika tidak, false.

Keterangan

Di .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity seperti yang diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk mewakili mengakibatkan kegagalan.

Berlaku untuk

TryParse(String, NumberStyles, IFormatProvider, Double)

Sumber:
Double.cs
Sumber:
Double.cs
Sumber:
Double.cs

Mengonversi representasi string angka dalam gaya tertentu dan format khusus budaya ke angka floating-point presisi ganda yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil atau gagal.

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result);
public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] double % result) = System::Numerics::INumberBase<double>::TryParse;
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out double result);
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out double result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * double -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Double) As Boolean

Parameter

s
String

String yang berisi angka yang akan dikonversi.

style
NumberStyles

Kombinasi bitwise dari nilai NumberStyles yang menunjukkan format syang diizinkan. Nilai umum yang ditentukan adalah Float dikombinasikan dengan AllowThousands.

provider
IFormatProvider

IFormatProvider yang menyediakan informasi pemformatan khusus budaya tentang s.

result
Double

Ketika metode ini kembali, berisi angka floating-point presisi ganda yang setara dengan nilai numerik atau simbol yang terkandung dalam s, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika parameter snull atau Empty atau tidak dalam format yang sesuai dengan style, atau jika style bukan kombinasi konstanta enumerasi NumberStyles yang valid. Ini juga gagal pada .NET Framework atau .NET Core 2.2 dan versi yang lebih lama jika s mewakili angka yang kurang dari SByte.MinValue atau lebih besar dari SByte.MaxValue. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam result akan ditimpa.

Mengembalikan

true jika s berhasil dikonversi; jika tidak, false.

Pengecualian

style bukan nilai NumberStyles.

-atau-

style menyertakan nilai AllowHexSpecifier.

Contoh

Contoh berikut menunjukkan penggunaan metode Double.TryParse(String, NumberStyles, IFormatProvider, Double) untuk mengurai representasi string angka yang memiliki gaya tertentu dan diformat menggunakan konvensi budaya tertentu.

string value;
NumberStyles style;
CultureInfo culture;
double number;

// Parse currency value using en-GB culture.
value = "£1,097.63";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Converted '£1,097.63' to 1097.63.

value = "1345,978";
style = NumberStyles.AllowDecimalPoint;
culture = CultureInfo.CreateSpecificCulture("fr-FR");
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Converted '1345,978' to 1345.978.

value = "1.345,978";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
culture = CultureInfo.CreateSpecificCulture("es-ES");
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Converted '1.345,978' to 1345.978.

value = "1 345,978";
if (Double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
//       Unable to convert '1 345,978'.
// Parse currency value using en-GB culture.
let value = "£1,097.63"
let style = NumberStyles.Number ||| NumberStyles.AllowCurrencySymbol
let culture = CultureInfo.CreateSpecificCulture "en-GB"
match Double.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '£1,097.63' to 1097.63.

let value = "1345,978"
let style = NumberStyles.AllowDecimalPoint
let culture = CultureInfo.CreateSpecificCulture "fr-FR"
match Double.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '1345,978' to 1345.978.

let value = "1.345,978"
let style = NumberStyles.AllowDecimalPoint ||| NumberStyles.AllowThousands
let culture = CultureInfo.CreateSpecificCulture("es-ES")
match Double.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// Displays:
//       Converted '1.345,978' to 1345.978.

let value = "1 345,978"
match Double.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// Displays:
//       Unable to convert '1 345,978'.
Dim value As String
Dim style As NumberStyles
Dim culture As CultureInfo
Dim number As Double

' Parse currency value using en-GB culture.
value = "£1,097.63"
style = NumberStyles.Number Or NumberStyles.AllowCurrencySymbol
culture = CultureInfo.CreateSpecificCulture("en-GB")
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays: 
'       Converted '£1,097.63' to 1097.63.

value = "1345,978"
style = NumberStyles.AllowDecimalPoint
culture = CultureInfo.CreateSpecificCulture("fr-FR")
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays:
'       Converted '1345,978' to 1345.978.

value = "1.345,978"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
culture = CultureInfo.CreateSpecificCulture("es-ES")
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays: 
'       Converted '1.345,978' to 1345.978.

value = "1 345,978"
If Double.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If    
' Displays:
'       Unable to convert '1 345,978'.

Keterangan

Di .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity seperti yang diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk mewakili mengakibatkan kegagalan.

Metode TryParse seperti metode Parse(String, NumberStyles, IFormatProvider), kecuali metode ini tidak memberikan pengecualian jika konversi gagal. Jika konversi berhasil, nilai pengembalian true dan parameter result diatur ke hasil konversi. Jika konversi gagal, nilai yang dikembalikan adalah false dan parameter result diatur ke nol. Ini menghilangkan kebutuhan untuk menggunakan penanganan pengecualian untuk menguji FormatException jika s tidak valid dan tidak dapat berhasil diurai.

Parameter style menentukan format parameter s yang diizinkan agar operasi penguraian berhasil. Ini harus merupakan kombinasi bendera bit dari enumerasi NumberStyles. Anggota NumberStyles berikut ini tidak didukung:

Parameter s dapat berisi NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, atau NumberFormatInfo.NaNSymbol untuk budaya yang ditunjukkan oleh provider. Selain itu, tergantung pada nilai style, parameter s dapat mencakup elemen-elemen berikut:

[ws] [$] [tanda tangan] [integral-digits,]integral-digits[.fractional-digits][e[sign]exponential-digits][ws]

Elemen dalam tanda kurung siku ([ dan ]) bersifat opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
ws Spasi kosong opsional. Spasi kosong dapat muncul di awal s jika style menyertakan bendera NumberStyles.AllowLeadingWhite. Ini dapat muncul di akhir s jika style menyertakan bendera NumberStyles.AllowTrailingWhite.
$ Simbol mata uang khusus budaya. Posisinya dalam string didefinisikan oleh properti NumberFormatInfo.CurrencyNegativePattern atau NumberFormatInfo.CurrencyPositivePattern objek NumberFormatInfo yang dikembalikan oleh metode IFormatProvider.GetFormat parameter provider. Simbol mata uang dapat muncul dalam s jika style menyertakan bendera NumberStyles.AllowCurrencySymbol.
tanda tangan Tanda opsional. Tanda dapat muncul di awal s jika style menyertakan bendera NumberStyles.AllowLeadingSign, dan dapat muncul di akhir s jika style menyertakan bendera NumberStyles.AllowTrailingSign. Tanda kurung dapat digunakan dalam s untuk menunjukkan nilai negatif jika style menyertakan bendera NumberStyles.AllowParentheses.
digit integral Serangkaian digit mulai dari 0 hingga 9 yang menentukan bagian integral dari angka. Digit integral dapat tidak ada jika ada digit pecahan.
, Simbol pemisah ribuan khusus budaya. Simbol pemisah ribuan budaya saat ini dapat muncul di s jika style menyertakan bendera NumberStyles.AllowThousands.
. Simbol titik desimal khusus budaya. Simbol titik desimal budaya saat ini dapat muncul di s jika style menyertakan bendera NumberStyles.AllowDecimalPoint.
digit pecahan Serangkaian digit mulai dari 0 hingga 9 yang menentukan bagian pecahan dari angka. Digit pecahan dapat muncul di s jika style menyertakan bendera NumberStyles.AllowDecimalPoint.
e Karakter e atau E, yang menunjukkan bahwa s dapat mewakili angka menggunakan notasi eksponensial. Parameter s dapat mewakili angka dalam notasi eksponensial jika gaya menyertakan bendera NumberStyles.AllowExponent.
digit eksponensial Serangkaian digit mulai dari 0 hingga 9 yang menentukan eksponen.

Nota

Karakter NUL (U+0000) yang mengakhiri di s diabaikan oleh operasi penguraian, terlepas dari nilai argumen style.

String dengan digit saja (yang sesuai dengan gaya NumberStyles.None) selalu berhasil diurai jika berada dalam rentang jenis Double. Elemen kontrol anggota System.Globalization.NumberStyles yang tersisa yang mungkin tetapi tidak diperlukan untuk hadir dalam string input. Tabel berikut menunjukkan bagaimana bendera NumberStyles individual memengaruhi elemen yang mungkin ada di s.

Nilai NumberStyles Elemen yang diizinkan dalam s selain digit
None Elemen integral-digits saja.
AllowDecimalPoint . dan elemen pecahan.
AllowExponent Parameter s juga dapat menggunakan notasi eksponensial. Bendera ini dengan sendirinya mendukung nilai dalam formulir digit integralEdigit eksponensial; bendera tambahan diperlukan untuk berhasil mengurai string dalam notasi eksponensial dengan elemen seperti tanda positif atau negatif dan simbol titik desimal.
AllowLeadingWhite Elemen ws di awal s.
AllowTrailingWhite Elemen ws di akhir .
AllowLeadingSign Elemen tanda tangan di awal .
AllowTrailingSign Elemen tanda tangan di akhir .
AllowParentheses Elemen tanda dalam bentuk tanda kurung yang mencakup nilai numerik.
AllowThousands Elemen ,.
AllowCurrencySymbol Elemen $.
Currency Semua. Parameter s tidak dapat mewakili angka heksadesimal atau angka dalam notasi eksponensial.
Float Elemen ws di awal atau akhir s, menandatangani di awal s, dan . simbol. Parameter s juga dapat menggunakan notasi eksponensial.
Number ws, sign, ribuan pemisah (, ), dan titik desimal (.) elemen.
Any Semua gaya, kecuali s tidak dapat mewakili angka heksadesimal.

Parameter provider adalah implementasi IFormatProvider, seperti objek NumberFormatInfo atau CultureInfo. Parameter provider memasok informasi khusus budaya yang digunakan dalam penguraian. Jika providernull atau objek NumberFormatInfo tidak dapat diperoleh, informasi format untuk budaya saat ini digunakan.

Konversi gagal jika parameter snull atau bukan nilai numerik, parameter provider tidak menghasilkan objek NumberFormatInfo, atau parameter style bukan kombinasi bendera bit dari enumerasi NumberStyles.

Biasanya, jika Anda meneruskan metode Double.TryParse string yang dibuat dengan memanggil metode Double.ToString, nilai Double asli dikembalikan. Namun, karena hilangnya presisi, nilainya mungkin tidak sama. Selain itu, mencoba mengurai representasi string dari Double.MinValue atau Double.MaxValue gagal melakukan round-trip. Pada .NET Framework dan .NET Core 2.2 dan versi sebelumnya, ia melemparkan OverflowException. Pada .NET Core 3.0 dan versi yang lebih baru, ia mengembalikan Double.NegativeInfinity jika Anda mencoba mengurai MinValue atau Double.PositiveInfinity jika Anda mencoba mengurai MaxValue. Contoh berikut memberikan ilustrasi.

using System;

public class Example
{
   public static void Main()
   {
      string value;
      double number;

      value = Double.MinValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);

      value = Double.MaxValue.ToString();
      if (Double.TryParse(value, out number))
         Console.WriteLine(number);
      else
         Console.WriteLine("{0} is outside the range of a Double.",
                           value);
   }
}
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.
open System

[<EntryPoint>]
let main _ = 
    let value = string Double.MinValue
    match Double.TryParse value with
    | true, number ->
        printfn $"{number}"
    | _ ->
        printfn $"{value} is outside the range of a Double."

    let value = string Double.MaxValue
    match Double.TryParse value with
    | true, number ->
        printfn $"{number}"
    | _ ->
        printfn $"{value} is outside the range of a Double."

    0
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the Double type.
//    1.79769313486232E+308 is outside the range of the Double type.
Module Example
   Public Sub Main()
      Dim value As String
      Dim number As Double
      
      value = Double.MinValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
      
      value = Double.MaxValue.ToString()
      If Double.TryParse(value, number) Then
         Console.WriteLine(number)
      Else
         Console.WriteLine("{0} is outside the range of a Double.", _
                           value)
      End If
   End Sub
End Module
' The example displays the following output:
'    -1.79769313486232E+308 is outside the range of the Double type.
'    1.79769313486232E+308 is outside the range of the Double type.

Pada .NET Framework dan .NET Core 2.2 dan versi yang lebih lama, jika s berada di luar rentang jenis data Double, metode Double.TryParse(String, NumberStyles, IFormatProvider, Double) melempar OverflowException.

Pada .NET Core 3.0 dan versi yang lebih baru, tidak ada pengecualian yang dilemparkan ketika s berada di luar rentang jenis data Double. Dalam kebanyakan kasus, metode Double.TryParse(String, NumberStyles, IFormatProvider, Double) menghitung hasil Double.PositiveInfinity atau Double.NegativeInfinity. Namun, ada sekumpulan kecil nilai yang dianggap lebih dekat dengan nilai maksimum atau minimum Double daripada ke infinitas positif atau negatif. Dalam kasus tersebut, metode menghitung hasil Double.MaxValue atau Double.MinValue.

Jika pemisah ditemui dalam parameter s selama operasi penguraian, dan pemisah mata uang atau angka yang berlaku dan pemisah grup sama, operasi penguraian mengasumsikan bahwa pemisah adalah pemisah desimal daripada pemisah grup. Untuk informasi selengkapnya tentang pemisah, lihat CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, dan NumberGroupSeparator.

Lihat juga

Berlaku untuk