Decimal.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 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
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
- Parse
- ToString()
Numerikus sztringek elemzése a .NET
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
- Parse
- ToString()
Numerikus sztringek elemzése a .NET
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