英語で読む

次の方法で共有


Convert.ToDecimal メソッド

定義

指定した値を 10 進数に変換します。

オーバーロード

ToDecimal(Single)

指定した単精度浮動小数点数の値を等価の 10 進数に変換します。

ToDecimal(String)

指定した数値の文字列形式を等価の 10 進数に変換します。

ToDecimal(UInt16)

指定した 16 ビット符号なし整数の値を等価の 10 進数に変換します。

ToDecimal(String, IFormatProvider)

指定したカルチャ固有の書式情報を使用して、指定した数値の文字列形式を等価の 10 進数に変換します。

ToDecimal(UInt64)

指定した 64 ビット符号なし整数の値を等価の 10 進数に変換します。

ToDecimal(Object, IFormatProvider)

指定したカルチャ固有の書式情報を使用して、指定したオブジェクトの値を等価の 10 進数に変換します。

ToDecimal(SByte)

指定した 8 ビット符号付き整数の値を等価の 10 進数に変換します。

ToDecimal(UInt32)

指定した 32 ビット符号なし整数の値を等価の 10 進数に変換します。

ToDecimal(Object)

指定したオブジェクトの値を等価の 10 進数に変換します。

ToDecimal(Int64)

指定した 64 ビット符号付き整数の値を等価の 10 進数に変換します。

ToDecimal(Int32)

指定した 32 ビット符号付き整数の値を等価の 10 進数に変換します。

ToDecimal(Int16)

指定した 16 ビット符号付き整数の値を等価の 10 進数に変換します。

ToDecimal(Double)

指定した倍精度浮動小数点数の値を等価の 10 進数に変換します。

ToDecimal(Decimal)

指定した 10 進数を返します。実際の変換は実行されません。

ToDecimal(DateTime)

このメソッドを呼び出すと、常に InvalidCastExceptionがスローされます。

ToDecimal(Char)

このメソッドを呼び出すと、常に InvalidCastExceptionがスローされます。

ToDecimal(Byte)

指定した 8 ビット符号なし整数の値を等価の 10 進数に変換します。

ToDecimal(Boolean)

指定したブール値を等価の 10 進数に変換します。

ToDecimal(Single)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定した単精度浮動小数点数の値を等価の 10 進数に変換します。

C#
public static decimal ToDecimal (float value);

パラメーター

value
Single

変換する単精度浮動小数点数。

戻り値

valueに相当する 10 進数。

例外

が Decimal.MaxValue より大きいか、Decimal.MinValue未満です。

次の例では、Single 値の配列内の各要素を Decimal 値に変換しようとしています。

C#
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.

注釈

このメソッドによって返される Decimal 値には、最大 7 桁の有効桁数が含まれます。 value パラメーターに有効桁数が 7 桁を超える場合は、最も近い値に丸めて丸められます。 次の例は、ToDecimal(Single) メソッドが最も近い値に丸めを使用して、有効桁数が 7 桁の Decimal 値を返す方法を示しています。

C#
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

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定した数値の文字列形式を等価の 10 進数に変換します。

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

パラメーター

value
String

変換する数値を含む文字列。

戻り値

valueの数値と等しい 10 進数。valuenull場合は 0 (ゼロ)。

例外

value は有効な形式の数値ではありません。

は、Decimal.MinValue 未満の数値、または Decimal.MaxValueより大きい数値を表します。

次の例は、ToDecimalの使用方法を示しています。 StringDecimalに変換しようと試み、変換中に発生する可能性のある例外をスローします。

C#
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);
}

注釈

ToDecimal(String) メソッドの使用は、valueDecimal.Parse(String) メソッドに渡すことと同じです。 value は、現在のカルチャの書式設定規則を使用して解釈されます。

変換が失敗した場合に例外を処理しない場合は、代わりに Decimal.TryParse メソッドを呼び出すことができます。 変換が成功したか失敗したかを示す Boolean 値が返されます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

重要

この API は CLS 準拠ではありません。

指定した 16 ビット符号なし整数の値を等価の 10 進数に変換します。

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

パラメーター

value
UInt16

変換する 16 ビット符号なし整数。

戻り値

valueに相当する 10 進数。

属性

次の例では、16 ビット符号なし整数の配列を Decimal 値に変換します。

C#
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.

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定したカルチャ固有の書式情報を使用して、指定した数値の文字列形式を等価の 10 進数に変換します。

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

パラメーター

value
String

変換する数値を含む文字列。

provider
IFormatProvider

カルチャ固有の書式設定情報を提供するオブジェクト。

戻り値

valueの数値と等しい 10 進数。valuenull場合は 0 (ゼロ)。

例外

value は有効な形式の数値ではありません。

は、Decimal.MinValue 未満の数値、または Decimal.MaxValueより大きい数値を表します。

次の例では、2 つの異なるカルチャを表す NumberFormatInfo オブジェクトを使用して、文字列の配列を Decimal 値に変換しようとします。

C#
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

注釈

戻り値は、valueDecimal.Parse メソッドを呼び出した結果です。

provider は、NumberFormatInfo オブジェクトを取得する IFormatProvider インスタンスです。 NumberFormatInfo オブジェクトは、valueの形式に関するカルチャ固有の情報を提供します。 providernullされている場合は、現在のカルチャの NumberFormatInfo が使用されます。

変換が失敗した場合に例外を処理しない場合は、代わりに Decimal.TryParse メソッドを呼び出すことができます。 変換が成功したか失敗したかを示す Boolean 値が返されます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

重要

この API は CLS 準拠ではありません。

指定した 64 ビット符号なし整数の値を等価の 10 進数に変換します。

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

パラメーター

value
UInt64

変換する 64 ビット符号なし整数。

戻り値

valueに相当する 10 進数。

属性

次の例では、符号なし長整数の配列を Decimal 値に変換します。

C#
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.

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定したカルチャ固有の書式情報を使用して、指定したオブジェクトの値を等価の 10 進数に変換します。

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

パラメーター

value
Object

IConvertible インターフェイスを実装するオブジェクト。

provider
IFormatProvider

カルチャ固有の書式設定情報を提供するオブジェクト。

戻り値

valueに相当する 10 進数。valuenull場合は 0 (ゼロ)。

例外

value は、Decimal 型に適した形式ではありません。

value では、IConvertible インターフェイスは実装されません。

-又は-

変換はサポートされていません。

は、Decimal.MinValue 未満の数値、または Decimal.MaxValueより大きい数値を表します。

次の例では、IConvertible インターフェイスを実装する Temperature クラスを定義します。

C#
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);
   }
}

次の例は、Temperature オブジェクトをパラメーターとして ToDecimal(Object, IFormatProvider) メソッドに渡すと、変換を実行するために Temperature クラスの IConvertible.ToDecimal 実装が呼び出されることを示しています。

C#
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

注釈

戻り値は、基になる型の valueIConvertible.ToDecimal メソッドを呼び出した結果です。

provider を使用すると、ユーザーは valueの内容に関するカルチャ固有の変換情報を指定できます。 基本型は providerを無視します。ただし、valueIConvertible インターフェイスを実装するユーザー定義型である場合は、パラメーターを使用できます。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

重要

この API は CLS 準拠ではありません。

指定した 8 ビット符号付き整数の値を等価の 10 進数に変換します。

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

パラメーター

value
SByte

変換する 8 ビット符号付き整数。

戻り値

valueに相当する 10 進数。

属性

次の例では、符号付きバイトの配列内の各要素を Decimal 値に変換します。

C#
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.

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

重要

この API は CLS 準拠ではありません。

指定した 32 ビット符号なし整数の値を等価の 10 進数に変換します。

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

パラメーター

value
UInt32

変換する 32 ビット符号なし整数。

戻り値

valueに相当する 10 進数。

属性

次の例では、符号なし整数の配列を Decimal 値に変換します。

C#
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.

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定したオブジェクトの値を等価の 10 進数に変換します。

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

パラメーター

value
Object

IConvertible インターフェイスまたは nullを実装するオブジェクト。

戻り値

valueに相当する 10 進数。valuenull場合は 0 (ゼロ)。

例外

value は、Decimal 型に適した形式ではありません。

value では、IConvertible インターフェイスは実装されません。

-又は-

変換はサポートされていません。

は、Decimal.MinValue 未満の数値、または Decimal.MaxValueより大きい数値を表します。

次の例では、オブジェクト配列内の各要素を Decimal 値に変換しようとしています。

C#
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.

注釈

戻り値は、基になる型の valueIConvertible.ToDecimal メソッドを呼び出した結果です。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定した 64 ビット符号付き整数の値を等価の 10 進数に変換します。

C#
public static decimal ToDecimal (long value);

パラメーター

value
Int64

変換する 64 ビット符号付き整数。

戻り値

valueに相当する 10 進数。

次の例では、Int64 値を Decimal 値に変換します。

C#
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.");
    }
}

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定した 32 ビット符号付き整数の値を等価の 10 進数に変換します。

C#
public static decimal ToDecimal (int value);

パラメーター

value
Int32

変換する 32 ビット符号付き整数。

戻り値

valueに相当する 10 進数。

次の例では、符号付き整数の配列を Decimal 値に変換します。

C#
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.

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定した 16 ビット符号付き整数の値を等価の 10 進数に変換します。

C#
public static decimal ToDecimal (short value);

パラメーター

value
Int16

変換する 16 ビット符号付き整数。

戻り値

valueに相当する 10 進数。

次の例では、16 ビット符号付き整数の配列を Decimal 値に変換します。

C#
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.

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定した倍精度浮動小数点数の値を等価の 10 進数に変換します。

C#
public static decimal ToDecimal (double value);

パラメーター

value
Double

変換する倍精度浮動小数点数。

戻り値

valueに相当する 10 進数。

例外

が Decimal.MaxValue より大きいか、Decimal.MinValue未満です。

次の例では、Double 値を Decimal 値に変換します。

C#
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.");
    }
}

注釈

このメソッドによって返される Decimal 値には、最大 15 桁の有効桁数が含まれています。 value パラメーターに 15 桁を超える有効桁数が含まれている場合は、最も近い値に丸めて丸められます。 次の例は、Convert.ToDecimal(Double) メソッドが最も近い値に丸めを使用して、有効桁数が 15 桁の Decimal 値を返す方法を示しています。

C#
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

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定した 10 進数を返します。実際の変換は実行されません。

C#
public static decimal ToDecimal (decimal value);

パラメーター

value
Decimal

10 進数。

戻り値

value は変更されずに返されます。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

このメソッドを呼び出すと、常に InvalidCastExceptionがスローされます。

C#
public static decimal ToDecimal (DateTime value);

パラメーター

value
DateTime

変換する日付と時刻の値。

戻り値

この変換はサポートされていません。 値は返されません。

例外

この変換はサポートされていません。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

このメソッドを呼び出すと、常に InvalidCastExceptionがスローされます。

C#
public static decimal ToDecimal (char value);

パラメーター

value
Char

変換する Unicode 文字。

戻り値

この変換はサポートされていません。 値は返されません。

例外

この変換はサポートされていません。

次の例では、Char 値を Decimalに変換し、失敗した場合に InvalidCastException をスローします。

C#
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.");
    }
}

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定した 8 ビット符号なし整数の値を等価の 10 進数に変換します。

C#
public static decimal ToDecimal (byte value);

パラメーター

value
Byte

変換する 8 ビット符号なし整数。

戻り値

valueに相当する 10 進数。

次の例では、Byte 値を Decimal 値に変換します。

C#
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.");
    }
}

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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)

ソース:
Convert.cs
ソース:
Convert.cs
ソース:
Convert.cs

指定したブール値を等価の 10 進数に変換します。

C#
public static decimal ToDecimal (bool value);

パラメーター

value
Boolean

変換するブール値。

戻り値

valuetrue場合の数値 1。それ以外の場合は 0。

次の例は、Boolean から Decimal 値への変換を示しています。

C#
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.

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.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