C#のDecimal.FromOACurrency()メソッドとは?使い方とサンプルコードを解説
C#のDecimal.FromOACurrency()メソッドは、OLEオートメーション通貨(Currency)値を格納した64ビット符号付き整数を、それに相当するDecimal型の値に変換するための静的メソッドです。
このメソッドは、ExcelなどのOfficeアプリケーションで使われるOLEオートメーションの通貨形式を、.NETのdecimal型へ変換したい場合に特に役立ちます。通貨値は小数点以下4桁の固定小数点数として扱われるため、単純な整数除算ではなく専用のメソッドを使うことで正確な変換が可能になります。
構文
Decimal.FromOACurrency()メソッドの構文は以下のとおりです。
public static decimal FromOACurrency (long val);
パラメータ val には、変換対象となるOLEオートメーション通貨値(64ビット符号付き整数)を指定します。戻り値として、対応するdecimal型の値が返されます。
使用例1:基本的な変換
まず、基本的な使い方を見てみましょう。次のコードでは、64ビット整数値978576LをOLEオートメーション通貨値として扱い、decimal型へ変換しています。
using System;
public class Demo {
public static void Main(){
long val = 978576L;
decimal res = Decimal.FromOACurrency(val);
Console.WriteLine("Decimal Value = "+ res);
}
}出力結果
上記のコードを実行すると、以下の出力が得られます。
Decimal Value = 97.8576
元の整数値978576が、小数点以下4桁の通貨表現「97.8576」に正しく変換されていることがわかります。
使用例2:long.MinValueを変換する
続いて、64ビット符号付き整数の最小値であるlong.MinValueを変換する例です。境界値でも正しく動作することを確認できます。
using System;
public class Demo {
public static void Main(){
long val = long.MinValue;
decimal res = Decimal.FromOACurrency(val);
Console.WriteLine("Decimal Value = "+ res);
}
}出力結果
実行すると、次のような出力になります。
Decimal Value = -922337203685477.5808
このように、long.MinValueである-9223372036854775808が、decimal型で表現可能な最小の通貨値「-922337203685477.5808」へと正確に変換されます。
まとめ
Decimal.FromOACurrency()メソッドを使うと、OLEオートメーション形式の通貨値を.NETのdecimal型へ簡単かつ正確に変換できます。逆にdecimal型からOLEオートメーション通貨値へ変換したい場合は、対になるDecimal.ToOACurrency()メソッドを使用します。Office連携やレガシーシステムとのデータ交換を行う際には、ぜひ活用してみてください。
-
C#のDecimal.Floor()メソッドの使い方を徹底解説
概要C#のDecimal.Floor()メソッドは、指定されたDecimal型の数値を「負の無限大方向」に向かって最も近い整数へ丸める静的メソッドです。正の数であれば小数点以下がそのまま切り捨てられますが、負の数の場合はより小さい整数側へ丸められる点に注意が必要です。構文構文は以下のとおりです。public static decimal Floor (decimal val);引数valには、丸めの対象となるDecimal型の値を指定します。使用例1:正の数の場合まず、正のDecimal値に対してDecimal.Floor()メソッドを使用する例を見てみましょう。using System; p
-
C#のDecimal.Divide()メソッドとは?構文と使い方をサンプルコード付きで解説
C#のDecimal.Divide()メソッドは、指定された2つのDecimal型の値を除算するための静的メソッドです。金額計算など、浮動小数点誤差を避けたい正確な10進数演算が必要な場面で活用されます。 構文 Decimal.Divide()メソッドの構文は以下の通りです。 public static decimal Divide (decimal val1, decimal val2); 各パラメータの意味は次の通りです。 val1:被除数(割られる数) val2:除数(割る数) 戻り値は、val1をval2で割った結果を表すdecimal型の値です。なお、val2に0を指定した場合は