Decimal.TryParse Metódus

Definíció

Egy szám sztringképét az azzal egyenértékűvé Decimal 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, NumberStyles, IFormatProvider, Decimal)

Egy szám sztringképét a megadott stílus- és kultúraspecifikus formátummal konvertálja Decimal annak megfelelőjeként. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

TryParse(String, Decimal)

Egy szám sztringképét az azzal egyenértékűvé Decimal alakítja. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

TryParse(ReadOnlySpan<Char>, Decimal)

Egy szám span-ábrázolását a kultúraspecifikus formátummal konvertálja Decimal annak megfelelőjeként. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

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

Egy szám span-ábrázolását a megadott stílus- és kultúraspecifikus formátummal konvertálja Decimal annak megfelelőjeként. A visszatérési érték azt jelzi, hogy az átalakítás sikeres vagy sikertelen volt-e.

TryParse(String, NumberStyles, IFormatProvider, Decimal)

Egy szám sztringképét a megadott stílus- és kultúraspecifikus formátummal konvertálja Decimal annak megfelelőjeként. 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] System::Decimal % result);
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean

Paraméterek

s
String

Az átalakítandó szám sztring-ábrázolása.

style
NumberStyles

Az enumerálási értékek bitenkénti kombinációja, amely a megengedett formátumot sjelzi. Egy jellemzően megadható érték a következő Number: .

provider
IFormatProvider

Egy objektum, amely a kultúraspecifikus elemzési információkat szolgáltatja.s

result
Decimal

Ha ez a metódus visszaadja, az a Decimal szám, amely megegyezik a szám értékével s, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a s paraméter null vagy Empty, nem megfelelő styleformátumú szám, vagy a Decimális.MinValue értéknél kisebb vagy a Decimal.MaxValue értéknél nagyobb számot jelöl. Ez a paraméter uininitializált; az eredetileg megadott result értékek felülíródnak.

Válaszok

trueha s sikeresen konvertálták; ellenkező esetben. false

Kivételek

style nem érték NumberStyles .

-vagy-

style az érték AllowHexSpecifier .

Példák

Az alábbi példa bemutatja, hogy a TryParse(String, NumberStyles, IFormatProvider, Decimal) metódus egy adott stílussal rendelkező szám sztring-ábrázolásának elemzésére használható, és egy adott kultúra konvenciói alapján van formázva.

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

// Parse currency value using en-GB culture.
value = "£1,097.63";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
if (Decimal.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 (Decimal.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 (Decimal.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 (Decimal.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 Decimal.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 Decimal.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 Decimal.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 Decimal.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 Decimal

' Parse currency value using en-GB culture.
value = "£1,097.63"
style = NumberStyles.Number Or NumberStyles.AllowCurrencySymbol
culture = CultureInfo.CreateSpecificCulture("en-GB")
If Decimal.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 Decimal.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 Decimal.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 Decimal.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

Ez a túlterhelés eltér a Decimal.Parse(String, NumberStyles, IFormatProvider) 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 s kivételkezeléssel teszteljen egy FormatException é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 stílus értékétől függően a s paraméter a következő elemeket tartalmazhatja:

[ws][$][jel][számjegyek;]számjegyek[.tört-számjegyek][e[jel]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 Description
Ws Nem kötelező üres terület. Ha a jelölőt is tartalmazzaNumberStyles.AllowLeadingWhite, a szóköz az elején sstyle jelenhet meg. Ez a jelölőt is tartalmazó NumberStyles.AllowTrailingWhite jelölő végén styles jelenhet meg.
$ Kultúraspecifikus pénznemszimbólum. A sztringben elfoglalt helyét a NumberFormatInfo.CurrencyNegativePattern paraméter metódusa NumberFormatInfoprovider által IFormatProvider.GetFormat visszaadott objektum vagy NumberFormatInfo.CurrencyPositivePattern 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.
Számjegy Számjegyek sorozata 0 és 9 között.
. Kultúraspecifikus tizedesjel.
törtjegyek Számjegyek sorozata 0 és 9 között.

A style paraméter a paraméter megengedett formátumát s határozza meg, és egy vagy több NumberStyles számba vehető állandót tartalmazhat egy bitenkénti VAGY művelettel kombinálva. Ha style null, s akkor a rendszer a stílus használatával értelmezi NumberStyles.Number .

A provider paraméter egy IFormatProvider implementáció, például egy vagy CultureInfo egy NumberFormatInfo objektum. A provider paraméter az elemzéshez használt kultúraspecifikus információkat szolgáltatja. Ha provider igen null, akkor a szál aktuális kultúrája lesz használva.

Az Decimal objektumok pontossága 29 számjegy. Ha s olyan számot jelöl, amelynek több mint 29 számjegye van, de törtrésze van, és a tartományon MaxValue belül van, és MinValuea számot nem csonkolja, hanem 29 számjegyre kerekíti a legközelebbire kerekítéssel.

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

A következőre érvényes:

TryParse(String, Decimal)

Egy szám sztringképét az azzal egyenértékűvé Decimal 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] System::Decimal % result);
public static bool TryParse(string s, out decimal result);
static member TryParse : string * decimal -> bool
Public Shared Function TryParse (s As String, ByRef result As Decimal) As Boolean

Paraméterek

s
String

Az átalakítandó szám sztring-ábrázolása.

result
Decimal

Ha ez a metódus visszaadja, az a Decimal szám, amely megegyezik a szám értékével s, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a s paraméter null vagy Empty, nem érvényes formátumú szám, vagy a Decimális.MinValue értéknél kisebb vagy a Decimal.MaxValue értéknél nagyobb számot jelöl. Ez a paraméter uininitializált; 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 Decimal.TryParse(String, Decimal) numerikus értékek Decimal sztringreprezentációit értékké alakítja. Feltételezi, hogy en-US a jelenlegi kultúra.

string value;
decimal number;

// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse a floating-point value with a currency symbol and a
// thousands separator.
value = "$1,643.57";
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse value in exponential notation.
value = "-1.643e6";
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse a negative integer value.
value = "-1689346178821";
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);
// The example displays the following output to the console:
//       1643.57
//       Unable to parse '$1,643.57'.
//       Unable to parse '-1.643e6'.
//       -1689346178821
// Parse a floating-point value with a thousands separator.
let value = "1,643.57"
match Decimal.TryParse value with
| true, number ->
    printfn $"{number}"
| _ ->
    printfn $"Unable to parse '{value}'."

// Parse a floating-point value with a currency symbol and a
// thousands separator.
let value = "$1,643.57"
match Decimal.TryParse value with
| true, number ->
    printfn $"{number}"
| _ -> 
    printfn $"Unable to parse '{value}'."

// Parse value in exponential notation.
let value = "-1.643e6"
match Decimal.TryParse value with
| true, number ->
    printfn $"{number}"
| _ -> 
    printfn $"Unable to parse '{value}'."

// Parse a negative integer value.
let value = "-1689346178821"
match Decimal.TryParse value with
| true, number ->
    printfn $"{number}"
| _ -> 
    printfn $"Unable to parse '{value}'."
// The example displays the following output to the console:
//       1643.57
//       Unable to parse '$1,643.57'.
//       Unable to parse '-1.643e6'.
//       -1689346178821
Dim value As String
Dim number As Decimal

' Parse a floating-point value with a thousands separator.
value = "1,643.57"
If Decimal.TryParse(value, number) Then
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)      
End If   

' Parse a floating-point value with a currency symbol and a 
' thousands separator.
value = "$1,643.57"
If Decimal.TryParse(value, number) Then
   Console.WriteLine(number)  
Else
   Console.WriteLine("Unable to parse '{0}'.", value)   
End If

' Parse value in exponential notation.
value = "-1.643e6"
If Decimal.TryParse(value, number)
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)   
End If

' Parse a negative integer value.
value = "-1689346178821"
If Decimal.TryParse(value, number)
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)   
End If
' The example displays the following output to the console:
'       1643.57
'       Unable to parse '$1,643.57'.
'       Unable to parse '-1.643e6'.
'       -1689346178821

Megjegyzések

Ez a túlterhelés eltér a Decimal.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 s kivételkezeléssel teszteljen egy FormatException érvénytelen és nem elemezhető eseményt.

A paraméter s számos űrlapot tartalmaz:

[ws][jel][számjegyek;]számjegyek[.tört-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 Description
Ws Nem kötelező üres terület.
jel Nem kötelező jel.
Számjegy Számjegyek sorozata 0 és 9 között.
, Kultúraspecifikus ezres elválasztó szimbólum.
. Kultúraspecifikus tizedesjel.
törtjegyek Számjegyek sorozata 0 és 9 között.

A paramétert s a rendszer a stílus használatával értelmezi NumberStyles.Number . 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).Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal)

A paraméter s elemzése az aktuális rendszerkultúra inicializált objektumának formázási információi NumberFormatInfo alapján történik. További információért lásd CurrentInfo. Ha egy sztringet más megadott kultúra formázási adataival szeretne elemezni, használja a metódus túlterhelését Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) .

Szükség esetén az érték s kerekítése a legközelebbire kerekítéssel történik.

Az Decimal objektumok pontossága 29 számjegy. Ha s olyan számot jelöl, amelynek több mint 29 számjegye van, de törtrésze van, és a tartományon MaxValue belül van, és MinValuea számot nem csonkolja, hanem 29 számjegyre kerekíti a legközelebbire kerekítéssel.

Ha egy elemzési művelet során elválasztójelet tapasztal 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

A következőre érvényes:

TryParse(ReadOnlySpan<Char>, Decimal)

Egy szám span-ábrázolását a kultúraspecifikus formátummal konvertálja Decimal annak megfelelőjeként. 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] System::Decimal % result);
public static bool TryParse(ReadOnlySpan<char> s, out decimal result);
static member TryParse : ReadOnlySpan<char> * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Decimal) As Boolean

Paraméterek

s
ReadOnlySpan<Char>

A konvertálni kívánt számot képviselő karaktereket tartalmazó span.

result
Decimal

Ha ez a metódus visszaadja, az a Decimal szám, amely megegyezik a szám értékével s, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a s paraméter a EmptynullDecimal.MinValue vagy a Decimal.MaxValue értéknél kisebb vagy nagyobb számot jelöl. Ez a paraméter uininitializált; az eredetileg megadott result értékek felülíródnak.

Válaszok

trueha s sikeresen konvertálták; ellenkező esetben. false

A következőre érvényes:

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

Egy szám span-ábrázolását a megadott stílus- és kultúraspecifikus formátummal konvertálja Decimal annak megfelelőjeként. 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] System::Decimal % result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean

Paraméterek

s
ReadOnlySpan<Char>

A konvertálni kívánt számot képviselő karaktereket tartalmazó span.

style
NumberStyles

Az enumerálási értékek bitenkénti kombinációja, amely a megengedett formátumot sjelzi. Egy jellemzően megadható érték a következő Number: .

provider
IFormatProvider

Egy objektum, amely a kultúraspecifikus elemzési információkat szolgáltatja.s

result
Decimal

Ha ez a metódus visszaadja, az a Decimal szám, amely megegyezik a szám értékével s, ha az átalakítás sikeres volt, vagy nulla, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a s paraméter null vagy Empty, nem megfelelő styleformátumú szám, vagy a Decimális.MinValue értéknél kisebb vagy a Decimal.MaxValue értéknél nagyobb számot jelöl. Ez a paraméter uininitializált; az eredetileg megadott result értékek felülíródnak.

Válaszok

trueha s sikeresen konvertálták; ellenkező esetben. false

A következőre érvényes: