Compartir a través de


Decimal.Parse Método

Definición

Convierte la representación de cadena de un número en su Decimal equivalente.

Sobrecargas

Parse(String)

Convierte la representación de cadena de un número en su Decimal equivalente.

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Analiza un intervalo de caracteres UTF-8 en un valor.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Analiza un intervalo de caracteres en un valor.

Parse(String, NumberStyles)

Convierte la representación de cadena de un número en un estilo especificado en su Decimal equivalente.

Parse(String, IFormatProvider)

Convierte la representación de cadena de un número en su Decimal equivalente mediante la información de formato específica de la referencia cultural especificada.

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Analiza un intervalo de caracteres UTF-8 en un valor.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Convierte la representación de intervalo de un número en su Decimal equivalente mediante el estilo y el formato específico de la referencia cultural especificados.

Parse(String, NumberStyles, IFormatProvider)

Convierte la representación de cadena de un número en su Decimal equivalente mediante el estilo y el formato específico de la referencia cultural especificados.

Parse(String)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de cadena de un número en su Decimal equivalente.

public:
 static System::Decimal Parse(System::String ^ s);
public static decimal Parse (string s);
static member Parse : string -> decimal
Public Shared Function Parse (s As String) As Decimal

Parámetros

s
String

Representación de cadena del número que se va a convertir.

Devoluciones

Equivalente al número contenido en s.

Excepciones

s no tiene el formato correcto.

s representa un número menor que Decimal.MinValue o mayor que Decimal.MaxValue.

Ejemplos

En el ejemplo de código siguiente se usa el método Parse(String) para analizar las representaciones de cadena de Decimal valores.

string value;
decimal number;
// Parse an integer with thousands separators.
value = "16,523,421";
number = Decimal.Parse(value);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '16,523,421' converted to 16523421.

// Parse a floating point value with thousands separators
value = "25,162.1378";
number = Decimal.Parse(value);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '25,162.1378' converted to 25162.1378.

// Parse a floating point number with US currency symbol.
value = "$16,321,421.75";
try
{
   number = Decimal.Parse(value);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '$16,321,421.75'.

// Parse a number in exponential notation
value = "1.62345e-02";
try
{
   number = Decimal.Parse(value);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '1.62345e-02'.
// Parse an integer with thousands separators.
let value = "16,523,421"
let number = Decimal.Parse value
printfn $"'{value}' converted to {number}."
// Displays:
//    '16,523,421' converted to 16523421.

// Parse a floating point value with thousands separators
let value = "25,162.1378"
let number = Decimal.Parse value
printfn $"'{value}' converted to {number}."
// Displays:
//    '25,162.1378' converted to 25162.1378.

// Parse a floating point number with US currency symbol.
let value = "$16,321,421.75"
try
    let number = Decimal.Parse value
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '$16,321,421.75'.

// Parse a number in exponential notation
let value = "1.62345e-02"
try
    let number = Decimal.Parse value
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '1.62345e-02'.
Dim value As String
Dim number As Decimal

' Parse an integer with thousands separators. 
value = "16,523,421"
number = Decimal.Parse(value)
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays: 
'    '16,523,421' converted to 16523421.

' Parse a floating point value with thousands separators
value = "25,162.1378"
number = Decimal.Parse(value)
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays:
'    '25,162.1378' converted to 25162.1378.

' Parse a floating point number with US currency symbol.
value = "$16,321,421.75"
Try
   number = Decimal.Parse(value)
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays:
'    Unable to parse '$16,321,421.75'.  

' Parse a number in exponential notation
value = "1.62345e-02"
Try
   number = Decimal.Parse(value)
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays: 
'    Unable to parse '1.62345e-02'.

Comentarios

El parámetro s contiene un número del formulario:

[ws] [sign] [digits,]digits[.fractional-digits][ws]

Los elementos entre corchetes ([ y ]) son opcionales. En la tabla siguiente se describe cada elemento.

Elemento Descripción
ws Espacio en blanco opcional.
de signo Un signo opcional.
de dígitos de Secuencia de dígitos que van de 0 a 9.
, Símbolo separador de miles específico de la referencia cultural.
. Símbolo de separador decimal específico de la referencia cultural.
fracciones de dígitos Secuencia de dígitos que van de 0 a 9.

El s de parámetro se interpreta con el estilo NumberStyles.Number. Esto significa que se permiten espacios en blanco y separadores de miles, pero no se permiten símbolos de moneda. Para definir explícitamente los elementos (como símbolos de moneda, separadores de miles y espacios en blanco) que pueden estar presentes en s, use el Decimal.Parse(String, NumberStyles) o el método Decimal.Parse(String, NumberStyles, IFormatProvider).

El parámetro s se analiza mediante la información de formato de un NumberFormatInfo inicializado para la referencia cultural del sistema actual. Para obtener más información, consulte CurrentInfo. Para analizar una cadena mediante la información de formato de alguna otra referencia cultural, use el método Decimal.Parse(String, IFormatProvider) o Decimal.Parse(String, NumberStyles, IFormatProvider).

Si es necesario, el valor de s se redondea mediante redondeo al más cercano.

Un Decimal tiene 29 dígitos de precisión. Si s representa un número que tiene más de 29 dígitos, pero tiene una parte fraccionaria y está dentro del intervalo de MaxValue y MinValue, el número se redondea, no trunca, a 29 dígitos con redondeo a más cercano.

Si durante una operación de análisis se encuentra un separador en el parámetro s y los separadores decimales y de grupo aplicables son iguales, la operación de análisis supone que el separador es un separador decimal en lugar de un separador de grupo. Para obtener más información sobre los separadores, vea CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatory NumberGroupSeparator.

Consulte también

Se aplica a

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Source:
Decimal.cs
Source:
Decimal.cs

Analiza un intervalo de caracteres UTF-8 en un valor.

public:
 static System::Decimal Parse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider) = IUtf8SpanParsable<System::Decimal>::Parse;
public static decimal Parse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider);
static member Parse : ReadOnlySpan<byte> * IFormatProvider -> decimal
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider) As Decimal

Parámetros

utf8Text
ReadOnlySpan<Byte>

Intervalo de caracteres UTF-8 que se van a analizar.

provider
IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural sobre utf8Text.

Devoluciones

Resultado del análisis utf8Text.

Implementaciones

Se aplica a

Parse(ReadOnlySpan<Char>, IFormatProvider)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Analiza un intervalo de caracteres en un valor.

public:
 static System::Decimal Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<System::Decimal>::Parse;
public static decimal Parse (ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> decimal
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As Decimal

Parámetros

s
ReadOnlySpan<Char>

Intervalo de caracteres que se va a analizar.

provider
IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural sobre s.

Devoluciones

Resultado del análisis s.

Implementaciones

Se aplica a

Parse(String, NumberStyles)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de cadena de un número en un estilo especificado en su Decimal equivalente.

public:
 static System::Decimal Parse(System::String ^ s, System::Globalization::NumberStyles style);
public static decimal Parse (string s, System.Globalization.NumberStyles style);
static member Parse : string * System.Globalization.NumberStyles -> decimal
Public Shared Function Parse (s As String, style As NumberStyles) As Decimal

Parámetros

s
String

Representación de cadena del número que se va a convertir.

style
NumberStyles

Combinación bit a bit de valores NumberStyles que indica los elementos de estilo que pueden estar presentes en s. Un valor típico que se debe especificar es Number.

Devoluciones

Número de Decimal equivalente al número contenido en s tal como se especifica en style.

Excepciones

style no es un valor NumberStyles.

-o-

style es el valor de AllowHexSpecifier.

s no tiene el formato correcto.

s representa un número menor que Decimal.MinValue o mayor que decimal.MaxValue

Ejemplos

En el ejemplo de código siguiente se usa el método Parse(String, NumberStyles) para analizar las representaciones de cadena de Decimal valores mediante la referencia cultural de en-US.

string value;
decimal number;
NumberStyles style;

// Parse string with a floating point value using NumberStyles.None.
value = "8694.12";
style = NumberStyles.None;
try
{
   number = Decimal.Parse(value, style);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '8694.12'.

// Parse string with a floating point value and allow decimal point.
style = NumberStyles.AllowDecimalPoint;
number = Decimal.Parse(value, style);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '8694.12' converted to 8694.12.

// Parse string with negative value in parentheses
value = "(1,789.34)";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands |
        NumberStyles.AllowParentheses;
number = Decimal.Parse(value, style);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '(1,789.34)' converted to -1789.34.

// Parse string using Number style
value = " -17,623.49 ";
style = NumberStyles.Number;
number = Decimal.Parse(value, style);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    ' -17,623.49 ' converted to -17623.49.
// Parse string with a floating point value using NumberStyles.None.
let value = "8694.12"
let style = NumberStyles.None
try
    let number = Decimal.Parse(value, style)
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '8694.12'.

// Parse string with a floating point value and allow decimal point.
let style = NumberStyles.AllowDecimalPoint
let number = Decimal.Parse(value, style)
printfn $"'{value}' converted to {number}."
// Displays:
//    '8694.12' converted to 8694.12.

// Parse string with negative value in parentheses
let value = "(1,789.34)"
let style = 
    NumberStyles.AllowDecimalPoint ||| 
    NumberStyles.AllowThousands ||| 
    NumberStyles.AllowParentheses
let number = Decimal.Parse(value, style)
printfn $"'{value}' converted to {number}."
// Displays:
//    '(1,789.34)' converted to -1789.34.

// Parse string using Number style
let value = " -17,623.49 "
let style = NumberStyles.Number
let number = Decimal.Parse(value, style)
printfn $"'{value}' converted to {number}."
// Displays:
//    ' -17,623.49 ' converted to -17623.49.
Dim value As String
Dim number As Decimal
Dim style As NumberStyles

' Parse string with a floating point value using NumberStyles.None. 
value = "8694.12"
style = NumberStyles.None
Try
   number = Decimal.Parse(value, style)  
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays:
'    Unable to parse '8694.12'.

' Parse string with a floating point value and allow decimal point. 
style = NumberStyles.AllowDecimalPoint
number = Decimal.Parse(value, style)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays:
'    '8694.12' converted to 8694.12.

' Parse string with negative value in parentheses
value = "(1,789.34)"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands Or _
        NumberStyles.AllowParentheses 
number = Decimal.Parse(value, style)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays:
'    '(1,789.34)' converted to -1789.34.

' Parse string using Number style
value = " -17,623.49 "
style = NumberStyles.Number
number = Decimal.Parse(value, style)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays:
'    ' -17,623.49 ' converted to -17623.49.

Comentarios

El parámetro style define los elementos de estilo (como separadores de miles, espacios en blanco y símbolos de moneda) que se permiten en el parámetro s para que la operación de análisis se realice correctamente. Debe ser una combinación de marcas de bits de la enumeración NumberStyles. No se admiten los siguientes miembros de NumberStyles:

Según el valor de style, el parámetro s puede incluir los siguientes elementos:

[ws] [$] [sign] [digits,]digits[.fractional-digits][e[sign]digits][ws]

Los elementos entre corchetes ([ y ]) son opcionales. En la tabla siguiente se describe cada elemento.

Elemento Descripción
ws Espacio en blanco opcional. El espacio en blanco puede aparecer al principio de s si style incluye la marca NumberStyles.AllowLeadingWhite y puede aparecer al final de s si style incluye la marca NumberStyles.AllowTrailingWhite.
$ Símbolo de moneda específico de la referencia cultural. Su posición en la cadena se define mediante las propiedades NumberFormatInfo.CurrencyNegativePattern y NumberFormatInfo.CurrencyPositivePattern de la referencia cultural actual. El símbolo de moneda de la referencia cultural actual puede aparecer en s si style incluye la marca NumberStyles.AllowCurrencySymbol.
de signo Un signo opcional. El signo puede aparecer al principio de s si style incluye la marca NumberStyles.AllowLeadingSign y puede aparecer al final de s si style incluye la marca NumberStyles.AllowTrailingSign. Los paréntesis se pueden usar en s para indicar un valor negativo si style incluye la marca NumberStyles.AllowParentheses.
de dígitos de Secuencia de dígitos que van de 0 a 9.
, Símbolo separador de miles específico de la referencia cultural. El separador de miles de la referencia cultural actual puede aparecer en s si style incluye la marca NumberStyles.AllowThousands.
. Símbolo de separador decimal específico de la referencia cultural. El símbolo de separador decimal de la referencia cultural actual puede aparecer en s si style incluye la marca NumberStyles.AllowDecimalPoint.
fracciones de dígitos Secuencia de dígitos que van de 0 a 9. Los dígitos fraccionarios solo pueden aparecer en s si style incluye la marca NumberStyles.AllowDecimalPoint.
e El carácter "e" o "E", que indica que el valor se representa en notación exponencial. El parámetro s puede representar un número en notación exponencial si style incluye la marca NumberStyles.AllowExponent.

Nota

La operación de análisis omite los caracteres NUL (U+0000) de s, independientemente del valor del argumento style.

Una cadena solo con dígitos (que corresponde al estilo None) siempre analiza correctamente si está en el intervalo del tipo Decimal. Los miembros de NumberStyles restantes controlan los elementos que pueden estar presentes, pero no deben estar presentes en la cadena de entrada. En la tabla siguiente se indica cómo afectan los miembros de NumberStyles individuales a los elementos que pueden estar presentes en s.

Valor numberStyles Elementos permitidos en s además de dígitos
None Los dígitos solo elemento.
AllowDecimalPoint El . y elementos fracciones de dígitos.
AllowExponent El parámetro s también puede usar la notación exponencial. Esta marca admite valores con el formato dígitosEdígitos; Se necesitan marcas adicionales para analizar correctamente las cadenas con elementos como signos positivos o negativos y símbolos decimales.
AllowLeadingWhite Elemento ws al principio de s.
AllowTrailingWhite Elemento ws al final de s.
AllowLeadingSign Elemento de signo al principio de .
AllowTrailingSign Elemento signo al final de .
AllowParentheses El signo elemento en forma de paréntesis que incluye el valor numérico.
AllowThousands Elemento ,.
AllowCurrencySymbol Elemento $.
Currency Todo. El parámetro s no puede representar un número hexadecimal o un número en notación exponencial.
Float Elemento ws al principio o al final de s, signo al principio de sy el símbolo .. El parámetro s también puede usar la notación exponencial.
Number Los elementos ws, sign, , y ..
Any Todos los estilos, excepto s no pueden representar un número hexadecimal.

El parámetro s se analiza mediante la información de formato de un objeto NumberFormatInfo inicializado para la referencia cultural del sistema actual. Para obtener más información, consulte CurrentInfo.

Un Decimal tiene 29 dígitos de precisión. Si s representa un número que tiene más de 29 dígitos, pero tiene una parte fraccionaria y está dentro del intervalo de MaxValue y MinValue, el número se redondea, no trunca, a 29 dígitos con redondeo a más cercano.

Si se encuentra un separador en el parámetro s durante una operación de análisis, styles incluye los valores NumberStyles.AllowThousands y NumberStyles.AllowDecimalPoint, y los separadores decimales o numéricos y separadores de grupo aplicables son los mismos, la operación de análisis supone que el separador es un separador decimal en lugar de un separador de grupo. Para obtener más información sobre los separadores, vea CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatory NumberGroupSeparator.

Consulte también

Se aplica a

Parse(String, IFormatProvider)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de cadena de un número en su Decimal equivalente mediante la información de formato específica de la referencia cultural especificada.

public:
 static System::Decimal Parse(System::String ^ s, IFormatProvider ^ provider);
public:
 static System::Decimal Parse(System::String ^ s, IFormatProvider ^ provider) = IParsable<System::Decimal>::Parse;
public static decimal Parse (string s, IFormatProvider provider);
public static decimal Parse (string s, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> decimal
Public Shared Function Parse (s As String, provider As IFormatProvider) As Decimal

Parámetros

s
String

Representación de cadena del número que se va a convertir.

provider
IFormatProvider

Un IFormatProvider que proporciona información de análisis específica de la referencia cultural sobre s.

Devoluciones

Número de Decimal equivalente al número contenido en s tal como se especifica en provider.

Implementaciones

Excepciones

s no tiene el formato correcto.

s representa un número menor que Decimal.MinValue o mayor que Decimal.MaxValue.

Ejemplos

El ejemplo siguiente es el controlador de eventos click de botón de un formulario web. Usa la matriz devuelta por la propiedad HttpRequest.UserLanguages para determinar la configuración regional del usuario. A continuación, crea una instancia de un objeto CultureInfo que corresponde a esa configuración regional. A continuación, el objeto NumberFormatInfo que pertenece a ese objeto CultureInfo se pasa al método Parse(String, IFormatProvider) para convertir la entrada del usuario en un valor de Decimal.

protected void OkToDecimal_Click(object sender, EventArgs e)
{
    string locale;
    decimal number;
    CultureInfo culture;

    // Return if string is empty
    if (String.IsNullOrEmpty(this.inputNumber.Text))
        return;

    // Get locale of web request to determine possible format of number
    if (Request.UserLanguages.Length == 0)
        return;
    locale = Request.UserLanguages[0];
    if (String.IsNullOrEmpty(locale))
        return;

    // Instantiate CultureInfo object for the user's locale
    culture = new CultureInfo(locale);

    // Convert user input from a string to a number
    try
    {
        number = Decimal.Parse(this.inputNumber.Text, culture.NumberFormat);
    }
    catch (FormatException)
    {
        return;
    }
    catch (Exception)
    {
        return;
    }
    // Output number to label on web form
    this.outputNumber.Text = "Number is " + number.ToString();
}
Protected Sub OkToDecimal_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles OkToDecimal.Click
   Dim locale As String
   Dim culture As CultureInfo
   Dim number As Decimal

   ' Return if string is empty
   If String.IsNullOrEmpty(Me.inputNumber.Text) Then Exit Sub

   ' Get locale of web request to determine possible format of number
   If Request.UserLanguages.Length = 0 Then Exit Sub
   locale = Request.UserLanguages(0)
   If String.IsNullOrEmpty(locale) Then Exit Sub

   ' Instantiate CultureInfo object for the user's locale
   culture = New CultureInfo(locale)

   ' Convert user input from a string to a number
   Try
      number = Decimal.Parse(Me.inputNumber.Text, culture.NumberFormat)
   Catch ex As FormatException
      Exit Sub
   Catch ex As Exception
      Exit Sub
   End Try

   ' Output number to label on web form
   Me.outputNumber.Text = "Number is " & number.ToString()
End Sub

Comentarios

Esta sobrecarga del método Parse(String, IFormatProvider) se usa normalmente para convertir texto que se puede dar formato de varias maneras a un valor de Decimal. Por ejemplo, se puede usar para convertir el texto escrito por un usuario en un cuadro de texto HTML a un valor numérico.

El parámetro s contiene un número del formulario:

[ws] [sign] [digits,]digits[.fractional-digits][ws]

Los elementos entre corchetes ([ y ]) son opcionales. En la tabla siguiente se describe cada elemento.

Elemento Descripción
ws Espacio en blanco opcional.
de signo Un signo opcional.
de dígitos de Secuencia de dígitos que van de 0 a 9.
, Símbolo separador de miles específico de la referencia cultural.
. Símbolo de separador decimal específico de la referencia cultural.
fracciones de dígitos Secuencia de dígitos que van de 0 a 9.

El parámetro s se interpreta mediante el estilo NumberStyles.Number. Esto significa que se permiten espacios en blanco y separadores de miles, pero no se permiten símbolos de moneda. Para definir explícitamente los elementos (como símbolos de moneda, separadores de miles y espacios en blanco) que pueden estar presentes en s, use el método Decimal.Parse(String, NumberStyles, IFormatProvider).

El parámetro provider es una implementación de IFormatProvider, como un objeto NumberFormatInfo o CultureInfo. El parámetro provider proporciona información específica de la referencia cultural que se usa en el análisis. Si provider es null, se usa la referencia cultural actual del subproceso.

Un objeto Decimal tiene 29 dígitos de precisión. Si s representa un número que tiene más de 29 dígitos, pero tiene una parte fraccionaria y está dentro del intervalo de MaxValue y MinValue, el número se redondea, no trunca, a 29 dígitos con redondeo a más cercano.

Si se encuentra un separador en el parámetro s durante una operación de análisis y los separadores decimales y de grupo aplicables son los mismos, la operación de análisis supone que el separador es un separador decimal en lugar de un separador de grupo. Para obtener más información sobre los separadores, vea CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatory NumberGroupSeparator.

Consulte también

Se aplica a

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Source:
Decimal.cs
Source:
Decimal.cs

Analiza un intervalo de caracteres UTF-8 en un valor.

public static decimal Parse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider? provider = default);
static member Parse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider -> decimal
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), Optional style As NumberStyles = System.Globalization.NumberStyles.Number, Optional provider As IFormatProvider = Nothing) As Decimal

Parámetros

utf8Text
ReadOnlySpan<Byte>

Intervalo de caracteres UTF-8 que se van a analizar.

style
NumberStyles

Combinación bit a bit de estilos de número que pueden estar presentes en utf8Text.

provider
IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural sobre utf8Text.

Devoluciones

Resultado del análisis utf8Text.

Implementaciones

Se aplica a

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de intervalo de un número en su Decimal equivalente mediante el estilo y el formato específico de la referencia cultural especificados.

public static decimal Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider? provider = default);
public static decimal Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Number, IFormatProvider provider = default);
static member Parse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider -> decimal
Public Shared Function Parse (s As ReadOnlySpan(Of Char), Optional style As NumberStyles = System.Globalization.NumberStyles.Number, Optional provider As IFormatProvider = Nothing) As Decimal

Parámetros

s
ReadOnlySpan<Char>

Intervalo que contiene los caracteres que representan el número que se va a convertir.

style
NumberStyles

Combinación bit a bit de valores NumberStyles que indica los elementos de estilo que pueden estar presentes en s. Un valor típico que se debe especificar es Number.

provider
IFormatProvider

Objeto IFormatProvider que proporciona información específica de la referencia cultural sobre el formato de s.

Devoluciones

Número de Decimal equivalente al número contenido en s según lo especificado por style y provider.

Implementaciones

Se aplica a

Parse(String, NumberStyles, IFormatProvider)

Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

Convierte la representación de cadena de un número en su Decimal equivalente mediante el estilo y el formato específico de la referencia cultural especificados.

public:
 static System::Decimal Parse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider);
public:
 static System::Decimal Parse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider) = System::Numerics::INumberBase<System::Decimal>::Parse;
public static decimal Parse (string s, System.Globalization.NumberStyles style, IFormatProvider provider);
public static decimal Parse (string s, System.Globalization.NumberStyles style, IFormatProvider? provider);
static member Parse : string * System.Globalization.NumberStyles * IFormatProvider -> decimal
Public Shared Function Parse (s As String, style As NumberStyles, provider As IFormatProvider) As Decimal

Parámetros

s
String

Representación de cadena del número que se va a convertir.

style
NumberStyles

Combinación bit a bit de valores NumberStyles que indica los elementos de estilo que pueden estar presentes en s. Un valor típico que se debe especificar es Number.

provider
IFormatProvider

Objeto IFormatProvider que proporciona información específica de la referencia cultural sobre el formato de s.

Devoluciones

Número de Decimal equivalente al número contenido en s según lo especificado por style y provider.

Implementaciones

Excepciones

s no tiene el formato correcto.

s representa un número menor que Decimal.MinValue o mayor que Decimal.MaxValue.

style no es un valor NumberStyles.

-o-

style es el valor de AllowHexSpecifier.

Ejemplos

En el ejemplo siguiente se usa una variedad de parámetros style y provider para analizar las representaciones de cadena de Decimal valores.

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

// Parse string using " " as the thousands separator
// and "," as the decimal separator for fr-FR culture.
value = "892 694,12";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
provider = new CultureInfo("fr-FR");

number = Decimal.Parse(value, style, provider);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '892 694,12' converted to 892694.12.

try
{
   number = Decimal.Parse(value, style, CultureInfo.InvariantCulture);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '892 694,12'.

// Parse string using "$" as the currency symbol for en-GB and
// en-US cultures.
value = "$6,032.51";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
provider = new CultureInfo("en-GB");

try
{
   number = Decimal.Parse(value, style, provider);
   Console.WriteLine("'{0}' converted to {1}.", value, number);
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse '{0}'.", value);
}
// Displays:
//    Unable to parse '$6,032.51'.

provider = new CultureInfo("en-US");
number = Decimal.Parse(value, style, provider);
Console.WriteLine("'{0}' converted to {1}.", value, number);
// Displays:
//    '$6,032.51' converted to 6032.51.
// Parse string using " " as the thousands separator
// and "," as the decimal separator for fr-FR culture.
let value = "892 694,12"
let style = NumberStyles.AllowDecimalPoint ||| NumberStyles.AllowThousands
let provider = CultureInfo "fr-FR"

let number = Decimal.Parse(value, style, provider)
printfn $"'{value}' converted to {number}."
// Displays:
//    '892 694,12' converted to 892694.12.

try
    let number = Decimal.Parse(value, style, CultureInfo.InvariantCulture)
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '892 694,12'.

// Parse string using "$" as the currency symbol for en-GB and
// en-US cultures.
let value = "$6,032.51"
let style = NumberStyles.Number ||| NumberStyles.AllowCurrencySymbol
let provider = CultureInfo "en-GB"

try
    let number = Decimal.Parse(value, style, provider)
    printfn $"'{value}' converted to {number}."
with :? FormatException ->
    printfn $"Unable to parse '{value}'."
// Displays:
//    Unable to parse '$6,032.51'.

let provider = CultureInfo "en-US"
let number = Decimal.Parse(value, style, provider)
printfn $"'{value}' converted to {number}."
// Displays:
//    '$6,032.51' converted to 6032.51.
Dim value As String
Dim number As Decimal
Dim style As NumberStyles
Dim provider As CultureInfo

' Parse string using " " as the thousands separator 
' and "," as the decimal separator for fr-FR culture.
value = "892 694,12"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
provider = New CultureInfo("fr-FR")

number = Decimal.Parse(value, style, provider)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays: 
'    '892 694,12' converted to 892694.12.

Try
   number = Decimal.Parse(value, style, CultureInfo.InvariantCulture)  
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays: 
'    Unable to parse '892 694,12'.  

' Parse string using "$" as the currency symbol for en-GB and
' en-US cultures.
value = "$6,032.51"
style = NumberStyles.Number Or NumberStyles.AllowCurrencySymbol
provider = New CultureInfo("en-GB")

Try
   number = Decimal.Parse(value, style, provider)  
   Console.WriteLine("'{0}' converted to {1}.", value, number)
Catch e As FormatException
   Console.WriteLine("Unable to parse '{0}'.", value)
End Try
' Displays: 
'    Unable to parse '$6,032.51'.

provider = New CultureInfo("en-US")
number = Decimal.Parse(value, style, provider)  
Console.WriteLine("'{0}' converted to {1}.", value, number)
' Displays: 
'    '$6,032.51' converted to 6032.51.

Comentarios

El parámetro style define el formato permitido del parámetro s para que la operación de análisis se realice correctamente. Debe ser una combinación de marcas de bits de la enumeración NumberStyles. No se admiten los siguientes miembros de NumberStyles:

Según el valor de style, el parámetro s puede incluir los siguientes elementos:

[ws] [$] [sign] [digits,]digits[.fractional-digits][e[sign]digits][ws]

Los elementos entre corchetes ([ y ]) son opcionales. En la tabla siguiente se describe cada elemento.

Elemento Descripción
$ Símbolo de moneda específico de la referencia cultural. Su posición en la cadena se define mediante las propiedades CurrencyNegativePattern y CurrencyPositivePattern del objeto NumberFormatInfo devuelto por el método GetFormat del parámetro provider. El símbolo de moneda puede aparecer en s si style incluye la marca NumberStyles.AllowCurrencySymbol.
ws Espacio en blanco opcional. El espacio en blanco puede aparecer al principio de s si style incluye la marca NumberStyles.AllowLeadingWhite y puede aparecer al final de s si style incluye la marca NumberStyles.AllowTrailingWhite.
de signo Un signo opcional. El signo puede aparecer al principio de s si style incluye la marca NumberStyles.AllowLeadingSign y puede aparecer al final de s si style incluye la marca NumberStyles.AllowTrailingSign. Los paréntesis se pueden usar en s para indicar un valor negativo si style incluye la marca NumberStyles.AllowParentheses.
de dígitos de Secuencia de dígitos que van de 0 a 9.
, Símbolo separador de miles específico de la referencia cultural. El separador de miles de la referencia cultural definida por provider puede aparecer en s si style incluye la marca NumberStyles.AllowThousands.
. Símbolo de separador decimal específico de la referencia cultural. El símbolo decimal de la referencia cultural definida por provider puede aparecer en s si style incluye la marca NumberStyles.AllowDecimalPoint.
fracciones de dígitos Secuencia de dígitos que van de 0 a 9. Los dígitos fraccionarios solo pueden aparecer en s si style incluye la marca NumberStyles.AllowDecimalPoint.
e El carácter "e" o "E", que indica que el valor se representa en notación exponencial. El parámetro s puede representar un número en notación exponencial si style incluye la marca NumberStyles.AllowExponent.

Nota

La operación de análisis omite los caracteres NUL (U+0000) de s, independientemente del valor del argumento style.

Una cadena solo con dígitos (que corresponde al estilo None) siempre analiza correctamente si está en el intervalo del tipo Decimal. Los miembros de NumberStyles restantes controlan los elementos que pueden estar presentes, pero no deben estar presentes en la cadena de entrada. En la tabla siguiente se indica cómo afectan los miembros de NumberStyles individuales a los elementos que pueden estar presentes en s.

Valor numberStyles Elementos permitidos en s además de dígitos
None Los dígitos solo elemento.
AllowDecimalPoint El . y elementos fracciones de dígitos.
AllowExponent El parámetro s también puede usar la notación exponencial. Esta marca admite valores con el formato dígitosEdígitos; Se necesitan marcas adicionales para analizar correctamente las cadenas con elementos como signos positivos o negativos y símbolos decimales.
AllowLeadingWhite Elemento ws al principio de s.
AllowTrailingWhite Elemento ws al final de s.
AllowLeadingSign Elemento de signo al principio de .
AllowTrailingSign Elemento signo al final de .
AllowParentheses El signo elemento en forma de paréntesis que incluye el valor numérico.
AllowThousands Elemento ,.
AllowCurrencySymbol Elemento $.
Currency Todo. El parámetro s no puede representar un número hexadecimal o un número en notación exponencial.
Float Elemento ws al principio o al final de s, signo al principio de sy el . símbolo. El parámetro s también puede usar la notación exponencial.
Number ws, sign, ,y . elementos.
Any Todos los estilos, excepto s no pueden representar un número hexadecimal.

El parámetro provider es una implementación de IFormatProvider, como un objeto NumberFormatInfo o CultureInfo. El parámetro provider proporciona información específica de la referencia cultural que se usa en el análisis. Si provider es null, se usa la referencia cultural actual del subproceso.

Un objeto Decimal tiene 29 dígitos de precisión. Si s representa un número que tiene más de 29 dígitos, pero tiene una parte fraccionaria y está dentro del intervalo de MaxValue y MinValue, el número se redondea, no trunca, a 29 dígitos con redondeo a más cercano.

Si se encuentra un separador en el parámetro s durante una operación de análisis y los separadores decimales y de grupo aplicables son los mismos, la operación de análisis supone que el separador es un separador decimal en lugar de un separador de grupo. Para obtener más información sobre los separadores, vea CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatory NumberGroupSeparator.

Consulte también

Se aplica a