Llegeix en anglès

Comparteix a través de


Convert.ToDecimal Método

Definición

Convierte un valor especificado en un número decimal.

Sobrecargas

ToDecimal(Single)

Convierte el valor del número de punto flotante de precisión simple especificado en el número decimal equivalente.

ToDecimal(String)

Convierte la representación de cadena especificada de un número en un número decimal equivalente.

ToDecimal(UInt16)

Convierte el valor del entero de 16 bits sin signo especificado en un número decimal equivalente.

ToDecimal(String, IFormatProvider)

Convierte la representación de cadena especificada de un número en un número decimal equivalente, utilizando la información de formato específica de la referencia cultural especificada.

ToDecimal(UInt64)

Convierte el valor del entero de 64 bits sin signo especificado en un número decimal equivalente.

ToDecimal(Object, IFormatProvider)

Convierte el valor del objeto especificado en un número decimal equivalente, utilizando la información de formato específica de la referencia cultural especificada.

ToDecimal(SByte)

Convierte el valor del entero con signo de 8 bits especificado en el número decimal equivalente.

ToDecimal(UInt32)

Convierte el valor del entero de 32 bits sin signo especificado en un número decimal equivalente.

ToDecimal(Object)

Convierte el valor del objeto especificado en un número decimal equivalente.

ToDecimal(Int64)

Convierte el valor del entero con signo de 64 bits especificado en un número decimal equivalente.

ToDecimal(Int32)

Convierte el valor del entero con signo de 32 bits especificado en un número decimal equivalente.

ToDecimal(Int16)

Convierte el valor del entero con signo de 16 bits especificado en un número decimal equivalente.

ToDecimal(Double)

Convierte el valor del número de punto flotante de precisión doble especificado en un número decimal equivalente.

ToDecimal(Decimal)

Devuelve el número decimal especificado; no se realiza ninguna conversión real.

ToDecimal(DateTime)

Al llamar a este método siempre se produce InvalidCastException.

ToDecimal(Char)

Al llamar a este método siempre se produce InvalidCastException.

ToDecimal(Byte)

Convierte el valor del entero de 8 bits sin signo especificado en el número decimal equivalente.

ToDecimal(Boolean)

Convierte el valor booleano especificado en el número decimal equivalente.

ToDecimal(Single)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor del número de punto flotante de precisión simple especificado en el número decimal equivalente.

public static decimal ToDecimal (float value);

Parámetros

value
Single

Número de punto flotante de precisión sencilla que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Excepciones

value es mayor que Decimal.MaxValue o menor que Decimal.MinValue.

Ejemplos

En el ejemplo siguiente se intenta convertir cada elemento de una matriz de valores de Single en un valor de Decimal.

float[] numbers = { Single.MinValue, -3e10f, -1093.54f, 0f, 1e-03f,
                    1034.23f, Single.MaxValue };
decimal result;

foreach (float number in numbers)
{
   try {
      result = Convert.ToDecimal(number);
      Console.WriteLine("Converted the Single value {0} to {1}.", number, result);
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is out of range of the Decimal type.", number);
   }
}
// The example displays the following output:
//       -3.402823E+38 is out of range of the Decimal type.
//       Converted the Single value -3E+10 to -30000000000.
//       Converted the Single value -1093.54 to -1093.54.
//       Converted the Single value 0 to 0.
//       Converted the Single value 0.001 to 0.001.
//       Converted the Single value 1034.23 to 1034.23.
//       3.402823E+38 is out of range of the Decimal type.

Comentarios

El valor Decimal devuelto por este método contiene un máximo de siete dígitos significativos. Si el parámetro value contiene más de siete dígitos significativos, se redondea mediante redondeo al más cercano. En el ejemplo siguiente se muestra cómo el método ToDecimal(Single) usa el redondeo al más cercano para devolver un valor de Decimal con siete dígitos significativos.

Console.WriteLine(Convert.ToDecimal(1234567500.12F));  // Displays 1234568000
Console.WriteLine(Convert.ToDecimal(1234568500.12F));  // Displays 1234568000

Console.WriteLine(Convert.ToDecimal(10.980365F));      // Displays 10.98036
Console.WriteLine(Convert.ToDecimal(10.980355F));      // Displays 10.98036

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(String)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte la representación de cadena especificada de un número en un número decimal equivalente.

public static decimal ToDecimal (string value);
public static decimal ToDecimal (string? value);

Parámetros

value
String

Cadena que contiene un número que se va a convertir.

Devoluciones

Número decimal equivalente al número de value, o 0 (cero) si value es null.

Excepciones

value no es un número en un formato válido.

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

Ejemplos

En el ejemplo siguiente se muestra el uso de ToDecimal. Intenta convertir un String en un Decimaly produce las posibles excepciones que pueden surgir durante la conversión.

public void ConvertStringDecimal(string stringVal) {
    decimal decimalVal = 0;
    
    try {
        decimalVal = System.Convert.ToDecimal(stringVal);
        System.Console.WriteLine(
            "The string as a decimal is {0}.", decimalVal);
    }
    catch (System.OverflowException){
        System.Console.WriteLine(
            "The conversion from string to decimal overflowed.");
    }
    catch (System.FormatException) {
        System.Console.WriteLine(
            "The string is not formatted as a decimal.");
    }
    catch (System.ArgumentNullException) {
        System.Console.WriteLine(
            "The string is null.");
    }

    // Decimal to string conversion will not overflow.
    stringVal = System.Convert.ToString(decimalVal);
    System.Console.WriteLine(
        "The decimal as a string is {0}.", stringVal);
}

Comentarios

El uso del método ToDecimal(String) equivale a pasar value al método Decimal.Parse(String). value se interpreta mediante las convenciones de formato de la referencia cultural actual.

Si prefiere no controlar una excepción si se produce un error en la conversión, puede llamar al método Decimal.TryParse en su lugar. Devuelve un Boolean valor que indica si la conversión se realizó correctamente o no.

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(UInt16)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Importante

Esta API no es conforme a CLS.

Convierte el valor del entero de 16 bits sin signo especificado en un número decimal equivalente.

[System.CLSCompliant(false)]
public static decimal ToDecimal (ushort value);

Parámetros

value
UInt16

Entero sin signo de 16 bits que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Atributos

Ejemplos

En el ejemplo siguiente se convierte una matriz de enteros de 16 bits sin signo en Decimal valores.

ushort[] numbers = { UInt16.MinValue, 121, 12345, UInt16.MaxValue };
decimal result;

foreach (ushort number in numbers)
{
   result = Convert.ToDecimal(number);
   Console.WriteLine("Converted the UInt16 value {0} to {1}.",
                     number, result);
}
// The example displays the following output:
//       Converted the UInt16 value 0 to 0.
//       Converted the UInt16 value 121 to 121.
//       Converted the UInt16 value 12345 to 12345.
//       Converted the UInt16 value 65535 to 65535.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(String, IFormatProvider)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte la representación de cadena especificada de un número en un número decimal equivalente, utilizando la información de formato específica de la referencia cultural especificada.

public static decimal ToDecimal (string value, IFormatProvider provider);
public static decimal ToDecimal (string? value, IFormatProvider? provider);

Parámetros

value
String

Cadena que contiene un número que se va a convertir.

provider
IFormatProvider

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

Devoluciones

Número decimal equivalente al número de value, o 0 (cero) si value es null.

Excepciones

value no es un número en un formato válido.

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

Ejemplos

En el ejemplo siguiente se intenta convertir una matriz de cadenas en Decimal valores mediante NumberFormatInfo objetos que representan dos referencias culturales diferentes.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] values = { "123456789", "12345.6789", "12 345,6789",
                          "123,456.789", "123 456,789", "123,456,789.0123",
                          "123 456 789,0123" };
      CultureInfo[] cultures = { new CultureInfo("en-US"),
                                 new CultureInfo("fr-FR") };

      foreach (CultureInfo culture in cultures)
      {
         Console.WriteLine("String -> Decimal Conversion Using the {0} Culture",
                           culture.Name);
         foreach (string value in values)
         {
            Console.Write("{0,20}  ->  ", value);
            try {
               Console.WriteLine(Convert.ToDecimal(value, culture));
            }
            catch (FormatException) {
               Console.WriteLine("FormatException");
            }
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//       String -> Decimal Conversion Using the en-US Culture
//                  123456789  ->  123456789
//                 12345.6789  ->  12345.6789
//                12 345,6789  ->  FormatException
//                123,456.789  ->  123456.789
//                123 456,789  ->  FormatException
//           123,456,789.0123  ->  123456789.0123
//           123 456 789,0123  ->  FormatException
//
//       String -> Decimal Conversion Using the fr-FR Culture
//                  123456789  ->  123456789
//                 12345.6789  ->  FormatException
//                12 345,6789  ->  12345.6789
//                123,456.789  ->  FormatException
//                123 456,789  ->  123456.789
//           123,456,789.0123  ->  FormatException
//           123 456 789,0123  ->  123456789.0123

Comentarios

El valor devuelto es el resultado de invocar el método Decimal.Parse en value.

provider es una instancia de IFormatProvider que obtiene un objeto NumberFormatInfo. El objeto NumberFormatInfo proporciona información específica de la referencia cultural sobre el formato de value. Si provider es null, se usa el NumberFormatInfo de la referencia cultural actual.

Si prefiere no controlar una excepción si se produce un error en la conversión, puede llamar al método Decimal.TryParse en su lugar. Devuelve un Boolean valor que indica si la conversión se realizó correctamente o no.

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(UInt64)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Importante

Esta API no es conforme a CLS.

Convierte el valor del entero de 64 bits sin signo especificado en un número decimal equivalente.

[System.CLSCompliant(false)]
public static decimal ToDecimal (ulong value);

Parámetros

value
UInt64

Entero de 64 bits sin signo que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Atributos

Ejemplos

En el ejemplo siguiente se convierte una matriz de enteros largos sin signo en Decimal valores.

ulong[] numbers = { UInt64.MinValue, 121, 12345, UInt64.MaxValue };
decimal result;

foreach (ulong number in numbers)
{
   result = Convert.ToDecimal(number);
   Console.WriteLine("Converted the UInt64 value {0} to {1}.",
                     number, result);
}
// The example displays the following output:
//    Converted the UInt64 value 0 to 0.
//    Converted the UInt64 value 121 to 121.
//    Converted the UInt64 value 12345 to 12345.
//    Converted the UInt64 value 18446744073709551615 to 18446744073709551615.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(Object, IFormatProvider)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor del objeto especificado en un número decimal equivalente, utilizando la información de formato específica de la referencia cultural especificada.

public static decimal ToDecimal (object value, IFormatProvider provider);
public static decimal ToDecimal (object? value, IFormatProvider? provider);

Parámetros

value
Object

Objeto que implementa la interfaz IConvertible.

provider
IFormatProvider

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

Devoluciones

Número decimal equivalente a value, o 0 (cero) si value es null.

Excepciones

value no está en un formato adecuado para un tipo de Decimal.

value no implementa la interfaz IConvertible.

-o-

No se admite la conversión.

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

Ejemplos

En el ejemplo siguiente se define una clase Temperature que implementa la interfaz IConvertible.

using System;
using System.Globalization;

public class Temperature : IConvertible
{
   private decimal m_Temp;

   public Temperature(decimal temperature)
   {
      this.m_Temp = temperature;
   }

   public decimal Celsius
   {
      get { return this.m_Temp; }
   }

   public decimal Kelvin
   {
      get { return this.m_Temp + 273.15m; }
   }

   public decimal Fahrenheit
   {
      get { return Math.Round((decimal) (this.m_Temp * 9 / 5 + 32), 2); }
   }

   public override string ToString()
   {
      return m_Temp.ToString("N2") + " °C";
   }

   // IConvertible implementations.
   public TypeCode GetTypeCode()
   {
      return TypeCode.Object;
   }

   public bool ToBoolean(IFormatProvider provider)
   {
      if (m_Temp == 0)
         return false;
      else
         return true;
   }

   public byte ToByte(IFormatProvider provider)
   {
      if (m_Temp < Byte.MinValue || m_Temp > Byte.MaxValue)
         throw new OverflowException(String.Format("{0} is out of range of the Byte type.",
                                                   this.m_Temp));
      else
         return Decimal.ToByte(this.m_Temp);
   }

   public char ToChar(IFormatProvider provider)
   {
      throw new InvalidCastException("Temperature to Char conversion is not supported.");
   }

   public DateTime ToDateTime(IFormatProvider provider)
   {
      throw new InvalidCastException("Temperature to DateTime conversion is not supported.");
   }

   public decimal ToDecimal(IFormatProvider provider)
   {
      return this.m_Temp;
   }

   public double ToDouble(IFormatProvider provider)
   {
      return Decimal.ToDouble(this.m_Temp);
   }

   public short ToInt16(IFormatProvider provider)
   {
      if (this.m_Temp < Int16.MinValue || this.m_Temp > Int16.MaxValue)
         throw new OverflowException(String.Format("{0} is out of range of the Int16 type.",
                                                   this.m_Temp));
      else
         return Decimal.ToInt16(this.m_Temp);
   }

   public int ToInt32(IFormatProvider provider)
      {
      if (this.m_Temp < Int32.MinValue || this.m_Temp > Int32.MaxValue)
         throw new OverflowException(String.Format("{0} is out of range of the Int32 type.",
                                                   this.m_Temp));
      else
         return Decimal.ToInt32(this.m_Temp);
   }

   public long ToInt64(IFormatProvider provider)
   {
      if (this.m_Temp < Int64.MinValue || this.m_Temp > Int64.MaxValue)
         throw new OverflowException(String.Format("{0} is out of range of the Int64 type.",
                                                   this.m_Temp));
      else
         return Decimal.ToInt64(this.m_Temp);
   }

   public sbyte ToSByte(IFormatProvider provider)
   {
      if (this.m_Temp < SByte.MinValue || this.m_Temp > SByte.MaxValue)
         throw new OverflowException(String.Format("{0} is out of range of the SByte type.",
                                                   this.m_Temp));
      else
         return Decimal.ToSByte(this.m_Temp);
   }

   public float ToSingle(IFormatProvider provider)
   {
      return Decimal.ToSingle(this.m_Temp);
   }

   public string ToString(IFormatProvider provider)
   {
      return m_Temp.ToString("N2", provider) + " °C";
   }

   public object ToType(Type conversionType, IFormatProvider provider)
   {
      switch (Type.GetTypeCode(conversionType))
      {
         case TypeCode.Boolean:
            return this.ToBoolean(null);
         case TypeCode.Byte:
            return this.ToByte(null);
         case TypeCode.Char:
            return this.ToChar(null);
         case TypeCode.DateTime:
            return this.ToDateTime(null);
         case TypeCode.Decimal:
            return this.ToDecimal(null);
         case TypeCode.Double:
            return this.ToDouble(null);
         case TypeCode.Int16:
            return this.ToInt16(null);
         case TypeCode.Int32:
            return this.ToInt32(null);
         case TypeCode.Int64:
            return this.ToInt64(null);
         case TypeCode.Object:
            if (typeof(Temperature).Equals(conversionType))
               return this;
            else
               throw new InvalidCastException(String.Format("Conversion to a {0} is not supported.",
                                                            conversionType.Name));
         case TypeCode.SByte:
            return this.ToSByte(null);
         case TypeCode.Single:
            return this.ToSingle(null);
         case TypeCode.String:
            return this.ToString(provider);
         case TypeCode.UInt16:
            return this.ToUInt16(null);
         case TypeCode.UInt32:
            return this.ToUInt32(null);
         case TypeCode.UInt64:
            return this.ToUInt64(null);
         default:
            throw new InvalidCastException(String.Format("Conversion to {0} is not supported.", conversionType.Name));
      }
   }

   public ushort ToUInt16(IFormatProvider provider)
   {
      if (this.m_Temp < UInt16.MinValue || this.m_Temp > UInt16.MaxValue)
         throw new OverflowException(String.Format("{0} is out of range of the UInt16 type.",
                                                   this.m_Temp));
      else
         return Decimal.ToUInt16(this.m_Temp);
   }

   public uint ToUInt32(IFormatProvider provider)
   {
      if (this.m_Temp < UInt32.MinValue || this.m_Temp > UInt32.MaxValue)
         throw new OverflowException(String.Format("{0} is out of range of the UInt32 type.",
                                                   this.m_Temp));
      else
         return Decimal.ToUInt32(this.m_Temp);
   }

   public ulong ToUInt64(IFormatProvider provider)
   {
      if (this.m_Temp < UInt64.MinValue || this.m_Temp > UInt64.MaxValue)
         throw new OverflowException(String.Format("{0} is out of range of the UInt64 type.",
                                                   this.m_Temp));
      else
         return Decimal.ToUInt64(this.m_Temp);
   }
}

En el ejemplo siguiente se muestra que cuando se pasa un objeto Temperature como parámetro al método ToDecimal(Object, IFormatProvider), se llama a la implementación IConvertible.ToDecimal de la clase Temperature para realizar la conversión.

public class Example
{
   public static void Main()
   {
      Temperature cold = new Temperature(-40);
      Temperature freezing = new Temperature(0);
      Temperature boiling = new Temperature(100);

      Console.WriteLine(Convert.ToDecimal(cold, null));
      Console.WriteLine(Convert.ToDecimal(freezing, null));
      Console.WriteLine(Convert.ToDecimal(boiling, null));
   }
}
// The example dosplays the following output:
//       -40
//       0
//       100

Comentarios

El valor devuelto es el resultado de invocar el método IConvertible.ToDecimal del tipo subyacente de value.

provider permite al usuario especificar información de conversión específica de la referencia cultural sobre el contenido de value. Los tipos base omiten provider; Sin embargo, el parámetro se puede usar si value es un tipo definido por el usuario que implementa la interfaz IConvertible.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(SByte)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Importante

Esta API no es conforme a CLS.

Convierte el valor del entero con signo de 8 bits especificado en el número decimal equivalente.

[System.CLSCompliant(false)]
public static decimal ToDecimal (sbyte value);

Parámetros

value
SByte

Entero de 8 bits con signo que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Atributos

Ejemplos

En el ejemplo siguiente se convierte cada elemento de una matriz de bytes firmados en un valor de Decimal.

sbyte[] numbers = { SByte.MinValue, -23, 0, 17, SByte.MaxValue };
decimal result;

foreach (sbyte number in numbers)
{
   result = Convert.ToDecimal(number);
   Console.WriteLine("Converted the SByte value {0} to {1}.", number, result);
}
//       Converted the SByte value -128 to -128.
//       Converted the SByte value -23 to -23.
//       Converted the SByte value 0 to 0.
//       Converted the SByte value 17 to 17.
//       Converted the SByte value 127 to 127.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(UInt32)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Importante

Esta API no es conforme a CLS.

Convierte el valor del entero de 32 bits sin signo especificado en un número decimal equivalente.

[System.CLSCompliant(false)]
public static decimal ToDecimal (uint value);

Parámetros

value
UInt32

Entero de 32 bits sin signo que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Atributos

Ejemplos

En el ejemplo siguiente se convierte una matriz de enteros sin signo en Decimal valores.

uint[] numbers = { UInt32.MinValue, 121, 12345, UInt32.MaxValue };
decimal result;

foreach (uint number in numbers)
{
   result = Convert.ToDecimal(number);
   Console.WriteLine("Converted the UInt32 value {0} to {1}.",
                     number, result);
}
// The example displays the following output:
//       Converted the UInt32 value 0 to 0.
//       Converted the UInt32 value 121 to 121.
//       Converted the UInt32 value 12345 to 12345.
//       Converted the UInt32 value 4294967295 to 4294967295.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(Object)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor del objeto especificado en un número decimal equivalente.

public static decimal ToDecimal (object value);
public static decimal ToDecimal (object? value);

Parámetros

value
Object

Objeto que implementa la interfaz IConvertible o null.

Devoluciones

Número decimal equivalente a value, o 0 (cero) si value es null.

Excepciones

value no está en un formato adecuado para un tipo de Decimal.

value no implementa la interfaz IConvertible.

-o-

No se admite la conversión.

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

Ejemplos

En el ejemplo siguiente se intenta convertir cada elemento de una matriz de objetos en un valor de Decimal.

object[] values = { true, 'a', 123, 1.764e32, "9.78", "1e-02",
                    1.67e03, "A100", "1,033.67", DateTime.Now,
                    Double.MaxValue };
decimal result;

foreach (object value in values)
{
   try {
      result = Convert.ToDecimal(value);
      Console.WriteLine("Converted the {0} value {1} to {2}.",
                        value.GetType().Name, value, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is out of range of the Decimal type.",
                        value.GetType().Name, value);
   }
   catch (FormatException) {
      Console.WriteLine("The {0} value {1} is not recognized as a valid Decimal value.",
                        value.GetType().Name, value);
   }
   catch (InvalidCastException) {
      Console.WriteLine("Conversion of the {0} value {1} to a Decimal is not supported.",
                        value.GetType().Name, value);
   }
}
// The example displays the following output:
//    Converted the Boolean value True to 1.
//    Conversion of the Char value a to a Decimal is not supported.
//    Converted the Int32 value 123 to 123.
//    The Double value 1.764E+32 is out of range of the Decimal type.
//    Converted the String value 9.78 to 9.78.
//    The String value 1e-02 is not recognized as a valid Decimal value.
//    Converted the Double value 1670 to 1670.
//    The String value A100 is not recognized as a valid Decimal value.
//    Converted the String value 1,033.67 to 1033.67.
//    Conversion of the DateTime value 10/15/2008 05:40:42 PM to a Decimal is not supported.
//    The Double value 1.79769313486232E+308 is out of range of the Decimal type.

Comentarios

El valor devuelto es el resultado de invocar el método IConvertible.ToDecimal del tipo subyacente de value.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(Int64)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor del entero con signo de 64 bits especificado en un número decimal equivalente.

public static decimal ToDecimal (long value);

Parámetros

value
Int64

Entero de 64 bits con signo que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Ejemplos

En el ejemplo siguiente se convierte un valor de Int64 en un valor de Decimal.

public void ConvertLongDecimal(long longVal) {

    decimal	decimalVal;
    
    // Long to decimal conversion cannot overflow.
    decimalVal = System.Convert.ToDecimal(longVal);
    System.Console.WriteLine("{0} as a decimal is {1}",
            longVal, decimalVal);

    // Decimal to long conversion can overflow.
    try {
        longVal = System.Convert.ToInt64(decimalVal);
        System.Console.WriteLine("{0} as a long is {1}",
            decimalVal, longVal);
    }
    catch (System.OverflowException) {
        System.Console.WriteLine(
            "Overflow in decimal-to-long conversion.");
    }
}

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(Int32)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor del entero con signo de 32 bits especificado en un número decimal equivalente.

public static decimal ToDecimal (int value);

Parámetros

value
Int32

Entero de 32 bits con signo que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Ejemplos

En el ejemplo siguiente se convierte una matriz de enteros con signo en Decimal valores.

int[] numbers = { Int32.MinValue, -1000, 0, 1000, Int32.MaxValue };
decimal result;

foreach (int number in numbers)
{
   result = Convert.ToDecimal(number);
   Console.WriteLine("Converted the Int32 value {0} to the Decimal value {1}.",
                     number, result);
}
// The example displays the following output:
//    Converted the Int32 value -2147483648 to the Decimal value -2147483648.
//    Converted the Int32 value -1000 to the Decimal value -1000.
//    Converted the Int32 value 0 to the Decimal value 0.
//    Converted the Int32 value 1000 to the Decimal value 1000.
//    Converted the Int32 value 2147483647 to the Decimal value 2147483647.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(Int16)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor del entero con signo de 16 bits especificado en un número decimal equivalente.

public static decimal ToDecimal (short value);

Parámetros

value
Int16

Entero de 16 bits con signo que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Ejemplos

En el ejemplo siguiente se convierte una matriz de enteros de 16 bits con signo en Decimal valores.

short[] numbers = { Int16.MinValue, -1000, 0, 1000, Int16.MaxValue };
decimal result;

foreach (short number in numbers)
{
   result = Convert.ToDecimal(number);
   Console.WriteLine("Converted the Int16 value {0} to the Decimal value {1}.",
                     number, result);
}
// The example displays the following output:
//       Converted the Int16 value -32768 to the Decimal value -32768.
//       Converted the Int16 value -1000 to the Decimal value -1000.
//       Converted the Int16 value 0 to the Decimal value 0.
//       Converted the Int16 value 1000 to the Decimal value 1000.
//       Converted the Int16 value 32767 to the Decimal value 32767.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(Double)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor del número de punto flotante de precisión doble especificado en un número decimal equivalente.

public static decimal ToDecimal (double value);

Parámetros

value
Double

Número de punto flotante de precisión doble que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Excepciones

value es mayor que Decimal.MaxValue o menor que Decimal.MinValue.

Ejemplos

En el ejemplo siguiente se convierte un valor de Double en un valor de Decimal.

public void ConvertDoubleDecimal(decimal decimalVal){
    
    double doubleVal;
    
    // Decimal to double conversion cannot overflow.
 doubleVal = System.Convert.ToDouble(decimalVal);
    System.Console.WriteLine("{0} as a double is: {1}",
            decimalVal, doubleVal);

    // Conversion from double to decimal can overflow.
    try
 {
       decimalVal = System.Convert.ToDecimal(doubleVal);
    System.Console.WriteLine ("{0} as a decimal is: {1}",
        doubleVal, decimalVal);
    }
    catch (System.OverflowException) {
        System.Console.WriteLine(
            "Overflow in double-to-double conversion.");
    }
}

Comentarios

El valor Decimal devuelto por este método contiene un máximo de 15 dígitos significativos. Si el parámetro value contiene más de 15 dígitos significativos, se redondea mediante redondeo al más cercano. En el ejemplo siguiente se muestra cómo el método Convert.ToDecimal(Double) usa el redondeo al más cercano para devolver un valor de Decimal con 15 dígitos significativos.

Console.WriteLine(Convert.ToDecimal(123456789012345500.12D));  // Displays 123456789012346000
Console.WriteLine(Convert.ToDecimal(123456789012346500.12D));  // Displays 123456789012346000

Console.WriteLine(Convert.ToDecimal(10030.12345678905D));      // Displays 10030.123456789
Console.WriteLine(Convert.ToDecimal(10030.12345678915D));      // Displays 10030.1234567892

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(Decimal)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Devuelve el número decimal especificado; no se realiza ninguna conversión real.

public static decimal ToDecimal (decimal value);

Parámetros

value
Decimal

Número decimal.

Devoluciones

value se devuelve sin cambios.

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(DateTime)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Al llamar a este método siempre se produce InvalidCastException.

public static decimal ToDecimal (DateTime value);

Parámetros

value
DateTime

Valor de fecha y hora que se va a convertir.

Devoluciones

Esta conversión no se admite. No se devuelve ningún valor.

Excepciones

Esta conversión no se admite.

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ToDecimal(Char)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Al llamar a este método siempre se produce InvalidCastException.

public static decimal ToDecimal (char value);

Parámetros

value
Char

Carácter Unicode que se va a convertir.

Devoluciones

Esta conversión no se admite. No se devuelve ningún valor.

Excepciones

Esta conversión no se admite.

Ejemplos

En el ejemplo siguiente se intenta convertir un valor de Char en Decimaly se produce InvalidCastException tras un error.

public void ConvertCharDecimal(char charVal) {
    Decimal decimalVal = 0;
    
    // Char to decimal conversion is not supported and will always
    // throw an InvalidCastException.
    try {
        decimalVal = System.Convert.ToDecimal(charVal);
    }
    catch (System.InvalidCastException) {
        System.Console.WriteLine(
            "Char-to-Decimal conversion is not supported " +
            "by the .NET Framework.");
    }

    //Decimal to char conversion is also not supported.
    try {
        charVal = System.Convert.ToChar(decimalVal);
    }
    catch (System.InvalidCastException) {
        System.Console.WriteLine(
            "Decimal-to-Char conversion is not supported " +
            "by the .NET Framework.");
    }
}

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ToDecimal(Byte)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor del entero de 8 bits sin signo especificado en el número decimal equivalente.

public static decimal ToDecimal (byte value);

Parámetros

value
Byte

Entero de 8 bits sin signo que se va a convertir.

Devoluciones

Número decimal equivalente a value.

Ejemplos

En el ejemplo siguiente se convierte un valor de Byte en un valor de Decimal.

public void ConvertByteDecimal(byte byteVal) {
    decimal decimalVal;

    // Byte to decimal conversion will not overflow.
    decimalVal = System.Convert.ToDecimal(byteVal);
    System.Console.WriteLine("The byte as a decimal is {0}.",
        decimalVal);

    // Decimal to byte conversion can overflow.
    try {
        byteVal = System.Convert.ToByte(decimalVal);
        System.Console.WriteLine("The Decimal as a byte is {0}.",
            byteVal);
    }
    catch (System.OverflowException) {
        System.Console.WriteLine(
            "The decimal value is too large for a byte.");
    }
}

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToDecimal(Boolean)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

Convierte el valor booleano especificado en el número decimal equivalente.

public static decimal ToDecimal (bool value);

Parámetros

value
Boolean

Valor booleano que se va a convertir.

Devoluciones

Número 1 si value es true; de lo contrario, 0.

Ejemplos

En el ejemplo siguiente se muestra la conversión de Boolean a Decimal valores.

bool[] flags = { true, false };
decimal result;

foreach (bool flag in flags)
{
   result = Convert.ToDecimal(flag);
   Console.WriteLine("Converted {0} to {1}.", flag, result);
}
// The example displays the following output:
//       Converted True to 1.
//       Converted False to 0.

Consulte también

Se aplica a

.NET 9 i altres versions
Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0