Double.TryParse Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy szám sztringképét dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.
Túlterhelések
| Name | Description |
|---|---|
| TryParse(String, IFormatProvider, Double) |
Megpróbál egy sztringet egy értékbe elemezni. |
| TryParse(ReadOnlySpan<Char>, Double) |
Egy adott stílusban és kultúrában megadott formátumban lévő szám span-ábrázolását dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e. |
| TryParse(String, Double) |
Egy szám sztringképét dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e. |
| TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double) |
Egy UTF-8 karakterből álló pántot próbál elemezni egy értékben. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, Double) |
Egy karaktertartományt próbál elemezni egy értékben. |
| TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Double) |
Egy UTF-8 karakterből álló pántot próbál elemezni egy értékben. |
| TryParse(ReadOnlySpan<Byte>, Double) |
Egy szám sztringképét tartalmazó UTF-8 karaktert próbál átalakítani a kettős pontosságú lebegőpontos számmal egyenértékűre. |
| TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Double) |
Egy adott stílusban és kultúrában megadott formátumú szám sztring-ábrázolását tartalmazó karakterfedést alakít át dupla pontosságú lebegőpontos számegyenértékké. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e. |
| TryParse(String, NumberStyles, IFormatProvider, Double) |
Egy szám sztring-ábrázolását egy megadott stílusban és kultúraspecifikus formátumban alakítja át dupla pontosságú lebegőpontos számegyenértékké. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e. |
Megjegyzések
A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.
TryParse(String, IFormatProvider, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Megpróbál egy sztringet egy értékbe elemezni.
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
Paraméterek
- s
- String
Az elemezni kívánt sztring.
- provider
- IFormatProvider
Egy objektum, amely kultúraspecifikus formázási információkat tartalmaz a fájlról s.
- result
- Double
Amikor ez a metódus visszatér, a sikeres elemzés s eredményét vagy egy nem definiált hibát tartalmaz.
Válaszok
trueha s sikeresen elemezték; ellenkező esetben. false
A következőre érvényes:
TryParse(ReadOnlySpan<Char>, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Egy adott stílusban és kultúrában megadott formátumban lévő szám span-ábrázolását dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.
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
Paraméterek
- s
- ReadOnlySpan<Char>
Az átalakítandó szám sztring-ábrázolását tartalmazó karakterfedés.
- result
- Double
Ha ez a metódus visszatér, a paraméterben s található numerikus érték vagy szimbólum dupla pontosságú lebegőpontos számát tartalmazza, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás sikertelen, ha a s paraméter üres null . Ha s a Double.MinValue értéknél kisebb érvényes szám, result akkor az .NegativeInfinity Ha s a Double.MaxValue értéknél nagyobb érvényes szám, result akkor az .PositiveInfinity Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott result értékek felülíródnak.
Válaszok
trueha s sikeresen konvertálták; ellenkező esetben. false
Megjegyzések
A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.
A következőre érvényes:
TryParse(String, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Egy szám sztringképét dupla pontosságú lebegőpontos számegyenértékké alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.
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
Paraméterek
- s
- String
Egy konvertálni kívánt számot tartalmazó sztring.
- result
- Double
Ha ez a metódus visszatér, a paraméter dupla pontosságú lebegőpontos számát s tartalmazza, ha az átalakítás sikeres volt, vagy nullát, ha az átalakítás sikertelen volt. Az átalakítás sikertelen, ha a s paraméter null érvényes formátumú vagy Empty nem szám. A .NET-keretrendszeren is meghiúsul, ha sDouble.MinValue vagy nagyobb, mint Double.MaxValue. Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott result értékek felülíródnak.
Válaszok
trueha s sikeresen konvertálták; ellenkező esetben. false
Példák
Az alábbi példa a TryParse(String, Double) numerikus értékek Double sztringreprezentációit értékké alakítja. Feltételezi, hogy en-US a jelenlegi kultúra.
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'.
Megjegyzések
A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.
Ez a túlterhelés eltér a Double.Parse(String) metódustól azáltal, hogy egy logikai értéket ad vissza, amely azt jelzi, hogy az elemzési művelet sikeres volt-e az elemzési számérték visszaadása helyett. Ez szükségtelenné teszi, hogy FormatException kivételkezeléssel teszteljen egy s érvénytelen és nem elemezhető eseményt.
A s paraméter az aktuális kultúra szimbólumát NumberFormatInfo.PositiveInfinitySymbolvagy NumberFormatInfo.NegativeInfinitySymbol szimbólumát NumberFormatInfo.NaNSymbolis tartalmazhatja. Ez a sztring-összehasonlítás nem érzéketlen a .NET Core 3.0-s és újabb verzióiban, de a korábbi verziókban, például a .NET-keretrendszerben megkülönbözteti a kis- és nagybetűket. A s paraméter az űrlap sztringje is lehet:
[ws][jel][integral-digits,]integral-digits[.[ törtjegyek]][e[jel]exponenciális-számjegyek][ws]
A szögletes zárójelek elemei nem kötelezőek. Az alábbi táblázat az egyes elemeket ismerteti.
| Elem | Leírás |
|---|---|
| Ws | Üres karakterek sorozata. |
| jel | Negatív jel vagy pozitív jelszimbólum. |
| integráljegyek | 0 és 9 közötti számkarakterek sorozata, amelyek a szám szerves részét határozzák meg. Az integráljegyek hiányoznak, ha törtjegyek vannak. |
| , | Kultúraspecifikus csoportelválasztó szimbólum. |
| . | Kultúraspecifikus tizedesjel. |
| törtjegyek | 0 és 9 közötti számkarakterek sorozata, amelyek a szám törtrészét határozzák meg. |
| E | Az "e" nagybetűs vagy kisbetűs karakter, amely exponenciális (tudományos) jelölést jelez. |
| exponenciális számjegyek | 0 és 9 közötti számkarakterek sorozata, amelyek kitevőt adnak meg. |
A numerikus formátumokról további információt a Formázástípusok című témakörben talál.
A s paramétert a rendszer a és NumberStyles.Float a NumberStyles.AllowThousands jelzők kombinációjával értelmezi. Ez azt jelenti, hogy szabad terület és több ezer elválasztó engedélyezett, de a pénznemszimbólumok nem. A metódus túlterheltségével explicit módon definiálhatja saz elemeket (például pénznemszimbólumokat, ezres elválasztójeleket és szóközöket).Double.TryParse(String, NumberStyles, IFormatProvider, Double)
A s paramétert a rendszer az aktuális rendszerkultúra inicializált objektumának formázási információi NumberFormatInfo alapján elemzi. További információért lásd NumberFormatInfo.CurrentInfo. Ha egy sztringet más megadott kultúra formázási adataival szeretne elemezni, használja a metódus túlterhelését Double.TryParse(String, NumberStyles, IFormatProvider, Double) .
Általában, ha a Double.TryParse metódus meghívásával létrehozott sztringet ad át a Double.ToString metódusnak, az eredeti Double érték lesz visszaadva. A pontosság elvesztése miatt azonban előfordulhat, hogy az értékek nem lesznek egyenlők. Ezen kívül megpróbálhatja elemezni a sztring megjelenítését, Double.MinValue vagy Double.MaxValue nem sikerül az oda-vissza út. A .NET-keretrendszeren egy OverflowException dob. .NET Core 3.0-s és újabb verzióiban Double.NegativeInfinity ad vissza, ha MinValue vagy Double.PositiveInfinity próbál elemezni MaxValue. Az alábbi példa egy illusztrációt tartalmaz.
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.
Ha .NET keretrendszerben a s kívül esik a Double adattípus tartományán, a TryParse(String, Double) metódus OverflowException.
A .NET Core 3.0-s és újabb verzióiban nem történik kivétel, ha s kívül esik a Double adattípus tartományán. A legtöbb esetben a metódus kiszámítja TryParse(String, Double) az eredmény vagy Double.PositiveInfinityDouble.NegativeInfinitya . Van azonban egy kis értékkészlet, amely közelebb van a pozitív vagy negatív végtelennél nagyobb maximális vagy minimális értékekhez Double . Ezekben az esetekben a metódus kiszámítja az eredmény vagy Double.MaxValueDouble.MinValuea .
Ha egy elemzési művelet során egy paraméter elválasztójelet észlel s , és a tizedesjelek és a csoportelválasztók megegyeznek, az elemzési művelet feltételezi, hogy az elválasztó nem csoportelválasztó, hanem tizedes elválasztó. Az elválasztókkal kapcsolatos további információkért lásd CurrencyDecimalSeparator: , NumberDecimalSeparator, CurrencyGroupSeparator, és NumberGroupSeparator.
Lásd még
- Parse(String)
- ToString()
Numerikus sztringek elemzése a .NET - minta: .NET Core WinForms Formatting Utility (C#)
- minta: .NET Core WinForms Formatting Utility (Visual Basic)
A következőre érvényes:
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Egy UTF-8 karakterből álló pántot próbál elemezni egy értékben.
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
Paraméterek
- utf8Text
- ReadOnlySpan<Byte>
Az elemezni kívánt UTF-8 karakter szélessége.
- provider
- IFormatProvider
Egy objektum, amely kultúraspecifikus formázási információkat tartalmaz a fájlról utf8Text.
- result
- Double
Visszatéréskor a sikeres elemzés utf8Text eredményét vagy a hiba egy nem definiált értékét tartalmazza.
Válaszok
trueha utf8Text sikeresen elemezték; ellenkező esetben. false
A következőre érvényes:
TryParse(ReadOnlySpan<Char>, IFormatProvider, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Egy karaktertartományt próbál elemezni egy értékben.
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
Paraméterek
- s
- ReadOnlySpan<Char>
Az elemezni kívánt karakterek száma.
- provider
- IFormatProvider
Egy objektum, amely kultúraspecifikus formázási információkat tartalmaz a fájlról s.
- result
- Double
Amikor ez a metódus visszatér, a sikeres elemzés seredményét vagy a hiba egy nem definiált értékét tartalmazza.
Válaszok
trueha s sikeresen elemezték; ellenkező esetben. false
A következőre érvényes:
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Egy UTF-8 karakterből álló pántot próbál elemezni egy értékben.
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
Paraméterek
- utf8Text
- ReadOnlySpan<Byte>
Az elemezni kívánt UTF-8 karakter szélessége.
- style
- NumberStyles
A számstílusok bitenkénti kombinációja, amely jelen lehet a fájlban utf8Text.
- provider
- IFormatProvider
Egy objektum, amely kultúraspecifikus formázási információkat tartalmaz a fájlról utf8Text.
- result
- Double
Visszatéréskor a sikeres elemzés utf8Text eredményét vagy a hiba egy nem definiált értékét tartalmazza.
Válaszok
trueha utf8Text sikeresen elemezték; ellenkező esetben. false
A következőre érvényes:
TryParse(ReadOnlySpan<Byte>, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Egy szám sztringképét tartalmazó UTF-8 karaktert próbál átalakítani a kettős pontosságú lebegőpontos számmal egyenértékűre.
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
Paraméterek
- utf8Text
- ReadOnlySpan<Byte>
Írásvédett UTF-8 karaktertartomány, amely tartalmazza az átalakítandó számot.
- result
- Double
Ha ez a metódus visszatér, a számérték vagy szimbólum utf8Text dupla pontosságú lebegőpontos számát tartalmazza, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás sikertelen, ha a utf8TextEmpty formátum érvényes vagy nem. Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott érték felülíródik.
Válaszok
trueha utf8Text sikeresen konvertálták; ellenkező esetben. false
A következőre érvényes:
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Egy adott stílusban és kultúrában megadott formátumú szám sztring-ábrázolását tartalmazó karakterfedést alakít át dupla pontosságú lebegőpontos számegyenértékké. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.
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, [Runtime::InteropServices::Out] double % result);
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
Paraméterek
- s
- ReadOnlySpan<Char>
A konvertálni kívánt számot tartalmazó írásvédett karaktertartomány.
- style
- NumberStyles
Az értékek bitenkénti kombinációja NumberStyles , amely a megengedett formátumot sjelzi. A megadható tipikus érték össze van Float adva a következővel AllowThousands: .
- provider
- IFormatProvider
Egy objektum, amely a kultúraspecifikus formázási sinformációkat tartalmazza.
- result
- Double
Ha ez a metódus eredményül ad vissza, és az átalakítás sikeres volt, a számértéknek vagy a szimbólumnak smegfelelő dupla pontosságú lebegőpontos számot tartalmaz. Nulla értéket tartalmaz, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a s paraméter nullüres karaktersáv, vagy nem megfelelő styleformátumú szám. Ha s a Double.MinValue értéknél kisebb érvényes szám, result akkor az .NegativeInfinity Ha s a Double.MaxValue értéknél nagyobb érvényes szám, result akkor az .PositiveInfinity Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott result értékek felülíródnak.
Válaszok
trueha s sikeresen konvertálták; ellenkező esetben. false
Megjegyzések
A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.
A következőre érvényes:
TryParse(String, NumberStyles, IFormatProvider, Double)
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
- Forrás:
- Double.cs
Egy szám sztring-ábrázolását egy megadott stílusban és kultúraspecifikus formátumban alakítja át dupla pontosságú lebegőpontos számegyenértékké. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.
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
Paraméterek
- s
- String
Egy konvertálni kívánt számot tartalmazó sztring.
- style
- NumberStyles
Az értékek bitenkénti kombinációja NumberStyles , amely a megengedett formátumot sjelzi. A megadható tipikus érték össze van Float adva a következővel AllowThousands: .
- provider
- IFormatProvider
OlyanIFormatProvider, amely a kultúraspecifikus formázási információkat tartalmazza.s
- result
- Double
A metódus visszatérésekor a függvény a számérték vagy szimbólum sdupla pontosságú lebegőpontos számát tartalmazza, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a paraméter megfelel a s számbavételi állandóknak, vagy nem megfelelő nullformátumban van, vagy ha Empty nem érvényes enumerálási style állandók kombinációja.styleNumberStyles A .NET-keretrendszeren is meghiúsul, ha sSByte.MinValue vagy nagyobb, mint SByte.MaxValue. Ez a paraméter nem inicializálva lesz átadva; az eredetileg megadott result értékek felülíródnak.
Válaszok
trueha s sikeresen konvertálták; ellenkező esetben. false
Kivételek
Példák
Az alábbi példa bemutatja, hogy a Double.TryParse(String, NumberStyles, IFormatProvider, Double) metódus segítségével elemezhető egy adott stílussal rendelkező és egy adott kultúra konvenciók alapján formázott számok sztringképe.
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'.
Megjegyzések
A .NET Core 3.0-s és újabb verzióiban az IEEE 754 specifikációja szerint a túl nagy értékek PositiveInfinity vagy NegativeInfinity értékre vannak kerekítve. A korábbi verziókban, beleértve a .NET-keretrendszert is, a túl nagy érték elemzése sikertelenséget eredményezett.
A TryParse metódus hasonló a Parse(String, NumberStyles, IFormatProvider) metódushoz, kivéve, ha ez a metódus nem ad kivételt, ha az átalakítás sikertelen. Ha az átalakítás sikeres, a visszatérési érték az, true és a result paraméter az átalakítás eredményére van állítva. Ha az átalakítás sikertelen, a visszatérési érték nulla false , a result paraméter értéke pedig nulla. Ez szükségtelenné teszi, hogy FormatException kivételkezeléssel teszteljen egy s érvénytelen és nem elemezhető eseményt.
A style paraméter meghatározza az elemzési s művelet sikeres végrehajtásához használható paraméter formátumát. Az enumerálás bitjelölőinek kombinációjának NumberStyles kell lennie. A következő NumberStyles tagok nem támogatottak:
A s paraméter tartalmazhat NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbolvagy NumberFormatInfo.NaNSymbol szimbólumot a kultúra által providerjelzett. Ez a sztring-összehasonlítás nem érzéketlen a .NET Core 3.0-s és újabb verzióiban, de a korábbi verziókban, például a .NET-keretrendszerben megkülönbözteti a kis- és nagybetűket. Emellett a paraméter az értéktől styles függően a következő elemeket is tartalmazhatja:
[ws] [$] [jel][integral-digits,]integral-digits[.fractional-digits][e[sign]exponenciális-számjegyek][ws]
A szögletes zárójelek ([ és ]) elemei nem kötelezőek. Az alábbi táblázat az egyes elemeket ismerteti.
| Elem | Leírás |
|---|---|
| Ws | Nem kötelező üres terület. Ha a jelölőt is tartalmazzas, a szóköz az elején styleNumberStyles.AllowLeadingWhite jelenhet meg. Ez a jelölőt is tartalmazó s jelölő végén styleNumberStyles.AllowTrailingWhite jelenhet meg. |
| $ | Kultúraspecifikus pénznemszimbólum. A sztringben elfoglalt helyét a NumberFormatInfo.CurrencyNegativePattern paraméter metódusa NumberFormatInfo.CurrencyPositivePatternNumberFormatInfo által IFormatProvider.GetFormat visszaadott objektum vagy provider tulajdonságok határozzák meg. A pénznemszimbólum akkor jelenhet meg, s ha style tartalmazza a jelölőt NumberStyles.AllowCurrencySymbol . |
| jel | Nem kötelező jel. A jel a jelölőt is magában foglaló tábla elején sstyle jelenhet meg, és a jelző végén NumberStyles.AllowLeadingSignsstyle is megjelenik.NumberStyles.AllowTrailingSign Zárójelekkel negatív értéket jelölhet s , ha style a NumberStyles.AllowParentheses jelölőt is tartalmazza. |
| integráljegyek | 0 és 9 közötti számjegyek sorozata, amelyek a szám szerves részét határozzák meg. Az integráljegyek hiányoznak, ha törtjegyek vannak. |
| , | Kultúraspecifikus ezres elválasztó szimbólum. A jelenlegi kultúra ezres elválasztó szimbóluma akkor jelenhet meg, s ha style tartalmazza a jelölőt NumberStyles.AllowThousands . |
| . | Kultúraspecifikus tizedesjel. Az aktuális kultúra tizedesjele akkor jelenhet meg, s ha style tartalmazza a jelölőt NumberStyles.AllowDecimalPoint . |
| törtjegyek | 0 és 9 közötti számjegysorozat, amely a szám törtrészét adja meg. A tört számjegyek akkor jelenhetnek meg, s ha style a jelölőt NumberStyles.AllowDecimalPoint is tartalmazzák. |
| e | Az e vagy E karakter, amely azt jelzi, hogy s exponenciális jelöléssel jelölhet egy számot. A s paraméter exponenciális jelöléssel jelölhet egy számot, ha a stílus tartalmazza a jelölőt NumberStyles.AllowExponent . |
| exponenciális számjegyek | 0 és 9 közötti számjegysorozat, amely kitevőt határoz meg. |
Note
A befejező NUL (U+0000) karaktereket s az elemzési művelet figyelmen kívül hagyja, függetlenül az style argumentum értékétől.
A csak számjegyeket tartalmazó sztring (amely megfelel a NumberStyles.None stílusnak) mindig sikeresen elemzi, ha a típus tartományában Double van. A fennmaradó System.Globalization.NumberStyles tagok olyan elemeket szabályoznak, amelyek lehetnek, de nem szükségesek a bemeneti sztringben való szerephez. Az alábbi táblázat azt mutatja be, hogy az egyes NumberStyles jelölők hogyan befolyásolják a lehetséges selemeket.
| NumberStyles érték | A számjegyeken kívül az s-ben engedélyezett elemek |
|---|---|
| None | Csak az integráljegyek elem. |
| AllowDecimalPoint | A . és a törtjegyű elemek. |
| AllowExponent | A s paraméter exponenciális jelölést is használhat. Ez a jelző önmagában támogatja az Eexponenciális számjegyekformájábanlévő értékeket; További jelzőkre van szükség a sztringek exponenciális jelölésben való sikeres elemzéséhez olyan elemekkel, mint a pozitív vagy negatív jelek és a tizedesjelek. |
| AllowLeadingWhite | A ws elem az elején s. |
| AllowTrailingWhite | A ws elem a végén s. |
| AllowLeadingSign | A tábla elején lévő s. |
| AllowTrailingSign | A jelelem a végén s. |
| AllowParentheses | A numerikus értéket tartalmazó zárójelek formájában megjelenő jelelem . |
| AllowThousands | A , elem. |
| AllowCurrencySymbol | Az $ elem. |
| Currency | Összes. A s paraméter nem jelölhet hexadecimális számot vagy exponenciális számokat. |
| Float | A ws elem az elején vagy végén s, a jel elején s, és a . szimbólum. A s paraméter exponenciális jelölést is használhat. |
| Number | A ws, sign, ezres elválasztó (,) és decimális pont (.) elemek. |
| Any | Az összes stílus, kivéve s a hexadecimális számokat nem jelölheti. |
A provider paraméter egy IFormatProvider implementáció, például egy vagy NumberFormatInfo egy CultureInfo objektum. A provider paraméter az elemzéshez használt kultúraspecifikus információkat szolgáltatja. Ha provider igen, null vagy egy NumberFormatInfo objektum nem kérhető le, a rendszer az aktuális kulturális környezet formátumadatait használja.
Az átalakítás meghiúsul, ha a s paraméter null numerikus érték, a provider paraméter nem hoz létre objektumot NumberFormatInfo , vagy a style paraméter nem az enumerálás bitjelölőinek NumberStyles kombinációja.
Általában, ha a Double.TryParse metódus meghívásával létrehozott sztringet ad át a Double.ToString metódusnak, az eredeti Double érték lesz visszaadva. A pontosság elvesztése miatt azonban előfordulhat, hogy az értékek nem lesznek egyenlők. Ezen kívül megpróbálhatja elemezni a sztring megjelenítését, Double.MinValue vagy Double.MaxValue nem sikerül az oda-vissza út. A .NET-keretrendszeren egy OverflowException dob. .NET Core 3.0-s és újabb verzióiban Double.NegativeInfinity ad vissza, ha MinValue vagy Double.PositiveInfinity próbál elemezni MaxValue. Az alábbi példa egy illusztrációt tartalmaz.
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.
Ha .NET keretrendszerben a s kívül esik a Double adattípus tartományán, a Double.TryParse(String, NumberStyles, IFormatProvider, Double) metódus OverflowException.
A .NET Core 3.0-s és újabb verzióiban nem történik kivétel, ha s kívül esik a Double adattípus tartományán. A legtöbb esetben a metódus kiszámítja Double.TryParse(String, NumberStyles, IFormatProvider, Double) az eredmény vagy Double.PositiveInfinityDouble.NegativeInfinitya . Van azonban egy kis értékkészlet, amely közelebb van a pozitív vagy negatív végtelennél nagyobb maximális vagy minimális értékekhez Double . Ezekben az esetekben a metódus kiszámítja az eredmény vagy Double.MaxValueDouble.MinValuea .
Ha egy elemzési művelet során elválasztó elem található a s paraméterben, és a vonatkozó pénznem vagy szám decimális és csoportelválasztói megegyeznek, az elemzési művelet feltételezi, hogy az elválasztó nem csoportelválasztó, hanem decimális elválasztó. Az elválasztókkal kapcsolatos további információkért lásd CurrencyDecimalSeparator: , NumberDecimalSeparator, CurrencyGroupSeparator, és NumberGroupSeparator.
Lásd még
- ToString()
Numerikus sztringek elemzése a .NET