Double.TryParse Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengonversi representasi string angka ke angka floating-point presisi ganda yang setara. Nilai yang dikembalikan menunjukkan apakah konversi berhasil atau gagal.
Overload
TryParse(ReadOnlySpan<Char>, IFormatProvider, Double) |
Mencoba mengurai rentang karakter 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 yang dikembalikan menunjukkan apakah konversi berhasil atau gagal. |
TryParse(String, Double) |
Mengonversi representasi string dari angka ke angka floating-point presisi ganda yang setara. Nilai yang dikembalikan menunjukkan apakah konversi berhasil atau gagal. |
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double) |
Mencoba mengurai rentang karakter UTF-8 ke dalam nilai. |
TryParse(String, IFormatProvider, Double) |
Mencoba mengurai string ke dalam 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 yang dikembalikan menunjukkan apakah konversi berhasil atau gagal. |
TryParse(String, NumberStyles, IFormatProvider, Double) |
Mengonversi representasi string dari angka dalam gaya tertentu dan format khusus budaya ke angka floating-point presisi ganda yang setara. Nilai yang dikembalikan 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 sebagaimana diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk diwakili mengakibatkan kegagalan.
TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)
- Sumber:
- Double.cs
- Sumber:
- Double.cs
- Sumber:
- Double.cs
Mencoba mengurai rentang karakter ke dalam 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 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 yang dikembalikan 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 numerik atau simbol yang terkandung dalam s
parameter, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika s
parameter adalah null
atau kosong, atau tidak dalam format yang sesuai dengan style
. Konversi juga gagal jika style
bukan kombinasi NumberStyles konstanta enumerasi yang valid. Jika s
adalah angka yang valid kurang dari Double.MinValue, result
adalah NegativeInfinity. Jika s
adalah angka valid yang lebih besar dari Double.MaxValue, result
adalah PositiveInfinity. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan akan ditimpa result
.
Mengembalikan
true
jika s
berhasil dikonversi; jika tidak, false
.
Keterangan
Dalam .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity sebagaimana diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk diwakili 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 yang dikembalikan 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 untuk dikonversi.
- result
- Double
Ketika metode ini kembali, berisi angka floating-point presisi ganda yang setara s
dengan parameter, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika s
parameter adalah null
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 akan ditimpa result
.
Mengembalikan
true
jika s
berhasil dikonversi; jika tidak, false
.
Contoh
Contoh berikut menggunakan TryParse(String, Double) metode untuk mengonversi representasi string dari nilai numerik menjadi Double nilai. 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
Dalam .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity sebagaimana diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk diwakili mengakibatkan kegagalan.
Kelebihan beban ini berbeda dari Double.Parse(String) metode 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 FormatException menguji jika s
tidak valid dan tidak dapat berhasil diurai.
Parameter s
dapat berisi , , NumberFormatInfo.NegativeInfinitySymbolNumberFormatInfo.NaNSymbol budaya NumberFormatInfo.PositiveInfinitySymbolsaat ini (perbandingan string peka huruf besar/kecil), atau string formulir:
[ws] [tanda] [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. |
sign | Tanda negatif atau simbol tanda positif. |
integral-digits | Serangkaian karakter numerik mulai dari 0 hingga 9 yang menentukan bagian integral dari angka tersebut. Digit integral dapat tidak ada jika ada digit pecahan. |
, | Simbol pemisah grup khusus budaya. |
. | Simbol titik desimal khusus budaya. |
fractional-digits | Serangkaian karakter numerik mulai dari 0 hingga 9 yang menentukan bagian pecahan dari angka tersebut. |
E | Karakter huruf besar atau huruf 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 Jenis Pemformatan.
Parameter s
ditafsirkan dengan menggunakan kombinasi NumberStyles.Float bendera dan NumberStyles.AllowThousands . Ini berarti bahwa spasi kosong dan ribuan pemisah diizinkan tetapi simbol mata uang tidak. Untuk secara eksplisit mendefinisikan elemen (seperti simbol mata uang, pemisah ribuan, dan spasi putih) yang dapat ada di s
, gunakan Double.TryParse(String, NumberStyles, IFormatProvider, Double) metode kelebihan beban.
Parameter s
diurai menggunakan informasi pemformatan dalam objek yang diinisialisasi NumberFormatInfo untuk budaya sistem saat ini. Untuk informasi selengkapnya, lihat NumberFormatInfo.CurrentInfo. Untuk mengurai string menggunakan informasi pemformatan dari beberapa budaya tertentu lainnya, gunakan Double.TryParse(String, NumberStyles, IFormatProvider, Double) metode kelebihan beban.
Biasanya, jika Anda meneruskan Double.TryParse metode string yang dibuat dengan memanggil Double.ToString metode , nilai asli Double dikembalikan. Namun, karena hilangnya presisi, nilainya mungkin tidak sama. Selain itu, mencoba mengurai representasi string baik Double.MinValue dari atau Double.MaxValue gagal melakukan round-trip. Pada .NET Framework dan .NET Core 2.2 dan versi sebelumnya, ia melempar OverflowException. Pada .NET Core 3.0 dan versi yang lebih baru, itu 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 Double jenis data, TryParse(String, Double) metode melempar OverflowException.
Pada .NET Core 3.0 dan versi yang lebih baru, tidak ada pengecualian yang dilemparkan ketika s
berada di luar rentang Double jenis data. Dalam kebanyakan kasus, TryParse(String, Double) metode menghitung hasil Double.PositiveInfinity atau Double.NegativeInfinity. Namun, ada sekumpulan kecil nilai yang dianggap lebih dekat dengan nilai Double maksimum atau minimum daripada ke infinitas positif atau negatif. Dalam kasus tersebut, metode menghitung hasil Double.MaxValue dari atau Double.MinValue.
Jika pemisah ditemui dalam s
parameter 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, , NumberDecimalSeparatorCurrencyGroupSeparator, dan NumberGroupSeparator.
Lihat juga
- Parse(String)
- ToString()
- Mengurai String Numerik di .NET
- Sampel: Utilitas Pemformatan .NET Core WinForms (C#)
- Sampel: Utilitas Pemformatan .NET Core WinForms (Visual Basic)
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 penguraian yang berhasil utf8Text
atau nilai yang tidak terdefinisi pada kegagalan.
Mengembalikan
true
jika utf8Text
berhasil diurai; jika tidak, false
.
Berlaku untuk
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 penguraian yang berhasil s
atau nilai yang tidak terdefinisi 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 gaya angka yang dapat ada di utf8Text
.
- provider
- IFormatProvider
Objek yang menyediakan informasi pemformatan khusus budaya tentang utf8Text
.
- result
- Double
Saat dikembalikan, berisi hasil penguraian yang berhasil utf8Text
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 utf8Text
adalah Empty 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 yang dikembalikan 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 NumberStyles nilai bitwise yang menunjukkan format yang diizinkan dari s
. Nilai umum yang ditentukan dikombinasikan Float dengan AllowThousands.
- provider
- IFormatProvider
Objek yang memasok informasi pemformatan khusus budaya tentang s
.
- result
- Double
Ketika metode ini kembali dan jika konversi berhasil, berisi angka floating-point presisi ganda yang setara dengan nilai numerik atau simbol yang terkandung dalam s
. Berisi nol jika konversi gagal. Konversi gagal jika s
parameter adalah null
, rentang karakter kosong, atau bukan angka dalam format yang sesuai dengan style
. Jika s
adalah angka yang valid kurang dari Double.MinValue, result
adalah NegativeInfinity. Jika s
adalah angka valid yang lebih besar dari Double.MaxValue, result
adalah PositiveInfinity. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan akan ditimpa result
.
Mengembalikan
true
jika s
berhasil dikonversi; jika tidak, false
.
Keterangan
Dalam .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity sebagaimana diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk diwakili 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 yang dikembalikan 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 untuk dikonversi.
- style
- NumberStyles
Kombinasi NumberStyles nilai bitwise yang menunjukkan format yang diizinkan dari s
. Nilai umum yang ditentukan dikombinasikan Float dengan AllowThousands.
- provider
- IFormatProvider
Yang IFormatProvider memasok 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 s
parameter adalah null
atau Empty atau tidak dalam format yang sesuai dengan style
, atau jika style
bukan kombinasi NumberStyles konstanta enumerasi 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 akan ditimpa result
.
Mengembalikan
true
jika s
berhasil dikonversi; jika tidak, false
.
Pengecualian
Contoh
Contoh berikut menunjukkan penggunaan Double.TryParse(String, NumberStyles, IFormatProvider, Double) metode 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
Dalam .NET Core 3.0 dan yang lebih baru, nilai yang terlalu besar untuk direpresentasikan dibulatkan ke PositiveInfinity atau NegativeInfinity sebagaimana diperlukan oleh spesifikasi IEEE 754. Dalam versi sebelumnya, termasuk .NET Framework, mengurai nilai yang terlalu besar untuk diwakili mengakibatkan kegagalan.
Metode TryParse ini seperti Parse(String, NumberStyles, IFormatProvider) metode , kecuali metode ini tidak memberikan pengecualian jika konversi gagal. Jika konversi berhasil, nilai yang dikembalikan adalah true
dan result
parameter diatur ke hasil konversi. Jika konversi gagal, nilai yang dikembalikan adalah false
dan result
parameter diatur ke nol. Ini menghilangkan kebutuhan untuk menggunakan penanganan pengecualian untuk FormatException menguji jika terjadi hal yang s
tidak valid dan tidak dapat berhasil diurai.
Parameter style
menentukan format parameter yang s
diizinkan agar operasi penguraian berhasil. Ini harus berupa kombinasi bendera bit dari NumberStyles enumerasi. Anggota berikut NumberStyles 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
, s
parameter dapat mencakup elemen berikut:
[ws] [$] [tanda] [integral-digits,]integral-digits[.fractional-digits][e[sign]exponential-digits][ws]
Elemen dalam tanda kurung siku ([ dan ]) adalah opsional. Tabel berikut ini menjelaskan setiap elemen.
Elemen | Deskripsi |
---|---|
Ws | Spasi kosong opsional. Spasi kosong dapat muncul di awal s jika style menyertakan NumberStyles.AllowLeadingWhite bendera. Ini dapat muncul di akhir s jika style menyertakan NumberStyles.AllowTrailingWhite bendera . |
$ | Simbol mata uang khusus budaya. Posisinya dalam string didefinisikan oleh NumberFormatInfo.CurrencyNegativePattern properti atau NumberFormatInfo.CurrencyPositivePattern objek yang NumberFormatInfo dikembalikan oleh IFormatProvider.GetFormat metode provider parameter . Simbol mata uang dapat muncul jika s style menyertakan NumberStyles.AllowCurrencySymbol bendera . |
sign | Tanda opsional. Tanda dapat muncul di awal s jika style menyertakan NumberStyles.AllowLeadingSign bendera, dan dapat muncul di akhir s jika style menyertakan NumberStyles.AllowTrailingSign bendera. Tanda kurung dapat digunakan s untuk menunjukkan nilai negatif jika style menyertakan NumberStyles.AllowParentheses bendera . |
integral-digits | Serangkaian digit mulai dari 0 hingga 9 yang menentukan bagian integral dari angka tersebut. Digit integral dapat tidak ada jika ada digit pecahan. |
, | Simbol pemisah ribuan khusus budaya. Simbol pemisah ribuan budaya saat ini dapat muncul jika s style menyertakan NumberStyles.AllowThousands bendera . |
. | Simbol titik desimal khusus budaya. Simbol titik desimal budaya saat ini dapat muncul jika s style menyertakan NumberStyles.AllowDecimalPoint bendera . |
fractional-digits | Serangkaian digit mulai dari 0 hingga 9 yang menentukan bagian pecahan dari angka. Digit pecahan dapat muncul jika s style menyertakan NumberStyles.AllowDecimalPoint bendera. |
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 NumberStyles.AllowExponent bendera . |
digit eksponensial | Serangkaian digit mulai dari 0 hingga 9 yang menentukan eksponen. |
Catatan
Setiap karakter NUL yang mengakhiri (U+0000) di s
diabaikan oleh operasi penguraian, terlepas dari style
nilai argumen.
String dengan digit saja (yang sesuai dengan NumberStyles.None gaya) selalu berhasil diurai jika berada dalam rentang Double jenis. Elemen kontrol anggota yang tersisa System.Globalization.NumberStyles yang mungkin tetapi tidak diperlukan untuk hadir dalam string input. Tabel berikut menunjukkan bagaimana bendera individual NumberStyles memengaruhi elemen yang mungkin ada di s
.
Nilai NumberStyles | Elemen yang diizinkan dalam s selain digit |
---|---|
None | Elemen integral-digits saja. |
AllowDecimalPoint | Elemen . dan fractional-digits . |
AllowExponent | Parameter s juga dapat menggunakan notasi eksponensial. Bendera ini dengan sendirinya mendukung nilai dalam bentuk integral-digitsEexponential-digits; 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 s . |
AllowLeadingSign | Elemen tanda di awal s . |
AllowTrailingSign | Elemen tanda di akhir s . |
AllowParentheses | Elemen tanda tangan dalam bentuk tanda kurung yang menyertakan 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 tanda di awal s , dan simbol . Parameter s juga dapat menggunakan notasi eksponensial. |
Number | Elemen ws , , sign ribuan pemisah (, ), dan titik desimal (.). |
Any | Semua gaya, kecuali s tidak dapat mewakili angka heksadesimal. |
Parameter provider
adalah IFormatProvider implementasi, seperti NumberFormatInfo objek atau CultureInfo . Parameter ini provider
memasok informasi khusus budaya yang digunakan dalam penguraian. Jika provider
adalah null
atau NumberFormatInfo objek tidak dapat diperoleh, informasi format untuk budaya saat ini digunakan.
Konversi gagal jika s
parameter adalah null
atau bukan nilai numerik, provider
parameter tidak menghasilkan NumberFormatInfo objek, atau style
parameter bukan kombinasi bendera bit dari NumberStyles enumerasi.
Biasanya, jika Anda meneruskan Double.TryParse metode string yang dibuat dengan memanggil Double.ToString metode , nilai asli Double dikembalikan. Namun, karena hilangnya presisi, nilainya mungkin tidak sama. Selain itu, mencoba mengurai representasi string baik 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, itu 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 Double jenis data, Double.TryParse(String, NumberStyles, IFormatProvider, Double) metode melemparkan OverflowException.
Pada .NET Core 3.0 dan versi yang lebih baru, tidak ada pengecualian yang dilemparkan ketika s
berada di luar rentang Double jenis data. Dalam kebanyakan kasus, Double.TryParse(String, NumberStyles, IFormatProvider, Double) metode menghitung hasil Double.PositiveInfinity atau Double.NegativeInfinity. Namun, ada sekumpulan kecil nilai yang dianggap lebih dekat dengan nilai Double maksimum atau minimum daripada ke infinitas positif atau negatif. Dalam kasus tersebut, metode menghitung hasil Double.MaxValue atau Double.MinValue.
Jika pemisah ditemui dalam s
parameter selama operasi penguraian, dan mata uang atau desimal 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, , NumberDecimalSeparatorCurrencyGroupSeparator, dan NumberGroupSeparator.
Lihat juga
Berlaku untuk
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk