C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のDecimal.ToDouble()メソッドの使い方を徹底解説

概要

C#のDecimal.ToDouble()メソッドは、指定したDecimal型(10進数)の値を、それと等価な倍精度浮動小数点数(double)に変換するための静的メソッドです。

構文

このメソッドの構文は以下の通りです。

public static double ToDouble (decimal val);

パラメータ「val」には、変換対象となるdecimal型の数値を指定します。戻り値としては、渡されたDecimal値と等価のdouble型の値が返されます。

使用例1:負の小数値の変換

まず、負の小数値を変換する基本的な例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      Decimal val1 = -0.22m;
      Decimal val2 = -0.01m;
      Console.WriteLine("Decimal 1 = "+val1);
      Console.WriteLine("Decimal 2 = "+val2);
      Double res1 = Decimal.ToDouble(val1);
      Double res2 = Decimal.ToDouble(val2);
      Console.WriteLine("Double value1 (Decimal to Double) = "+res1);
      Console.WriteLine("Double value2 (Decimal to Double) = "+res2);
   }
}

出力結果

このプログラムを実行すると、以下の出力が得られます。

Decimal 1 = -0.22
Decimal 2 = -0.01
Double value1 (Decimal to Double) = -0.22
Double value2 (Decimal to Double) = -0.01

使用例2:大きな数値の変換

次に、より大きな数値を変換する例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      Decimal val1 = 23828m;
      Decimal val2 = 976587687595766665m;
      Console.WriteLine("Decimal 1 = "+val1);
      Console.WriteLine("Decimal 2 = "+val2);
      Double res1 = Decimal.ToDouble(val1);
      Double res2 = Decimal.ToDouble(val2);
      Console.WriteLine("Double value1 (Decimal to Double) = "+res1);
      Console.WriteLine("Double value2 (Decimal to Double) = "+res2);
   }
}

出力結果

このプログラムを実行すると、以下の出力が得られます。

Decimal 1 = 23828
Decimal 2 = 976587687595766665
Double value1 (Decimal to Double) = 23828
Double value2 (Decimal to Double) = 9.76587687595767E+17

注意点:精度の低下に気をつけよう

Decimal型からDouble型へ変換する際には注意が必要です。Decimal型は28〜29桁の有効桁数を持つのに対し、Double型の有効桁数は約15〜16桁しかありません。そのため、大きな数値や高精度な小数を変換すると、丸め誤差が発生する可能性があります。

実際に上記の例2では、元の値「976587687595766665」が指数表記の「9.76587687595767E+17」に変換され、末尾の桁の精度が失われていることが確認できます。金額計算など高い精度が求められる処理では、無理にDouble型へ変換せず、Decimal型のまま扱うことを推奨します。

  1. C#のDecimal.ToOACurrency()メソッドとは?構文と使い方をサンプルコードで解説

    C#のDecimal.ToOACurrency()メソッドは、指定されたDecimal(10進数)の値を、64ビット符号付き整数に格納されるOLEオートメーション通貨(OLE Automation Currency)値へと変換するためのメソッドです。OLEオートメーション通貨は、小数点以下4桁を固定で持つ形式で表現され、元の値が10,000倍された整数として扱われます。そのため、変換結果はlong型(64ビット符号付き整数)として返されます。構文このメソッドの構文は以下の通りです。public static long ToOACurrency (decimal val);パラメータ「val」に

  2. C#のDecimal.Floor()メソッドの使い方を徹底解説

    概要C#のDecimal.Floor()メソッドは、指定されたDecimal型の数値を「負の無限大方向」に向かって最も近い整数へ丸める静的メソッドです。正の数であれば小数点以下がそのまま切り捨てられますが、負の数の場合はより小さい整数側へ丸められる点に注意が必要です。構文構文は以下のとおりです。public static decimal Floor (decimal val);引数valには、丸めの対象となるDecimal型の値を指定します。使用例1:正の数の場合まず、正のDecimal値に対してDecimal.Floor()メソッドを使用する例を見てみましょう。using System; p