.NET開発者のためのブログメディア
C#のDecimal型を使った計算と型変換の方法
整数の演算であれば「int型」で事足りるかと思いますが、Decimal型では小数点以下の数値も扱うことができ、標準的な数値演算をサポートするメソッドも用意されています。
この記事では、Decimal型を使った計算や型変換について解説していきます。ぜひ参考にしてみてください。
- PG
- 計算結果の小数点以下が画面に表示されません。一度ソースコードを見てもらえないでしょうか?
- PM
- なるほど、計算結果をint型で格納していますね。int型は整数しか扱えないので、小数点以下は切り捨てられます。このような場合には、Decimal型を使うのがおすすめです。
目次
Decimal型の概要
Decimal型は10進数の浮動小数点数を表しています。浮動小数点型には、他にもfloat型やdouble型が存在しますが、その中でもDecimal型は有効桁数の範囲が広く、丸め誤差のない財務計算にも適しています。
Decimal型での計算
それでは、実際にDecimal型を用いて、代表的な四則演算を行っていきましょう。
四則演算ごとにメソッドが用意されており、引数に2つの数値を与えて計算結果を返します。
【加算(Add)】
1
2
3
4
|
Decimal d1 = 100.05m;
Decimal d2 = 10.2m;
Console.WriteLine(Decimal.Add(d1, d2));
// → 出力結果は「110.25」となります。
|
【減算(Subtract)】
1
2
3
4
|
Decimal d1 = 100m;
Decimal d2 = 0.5m;
Console.WriteLine(Decimal.Subtract(d1, d2));
// → 出力結果は「99.5」となります。
|
【乗算(Multiply)】
1
2
3
4
|
Decimal d1 = 100m;
Decimal d2 = 1.1m;
Console.WriteLine(Decimal.Multiply(d1, d2));
// → 出力結果は「110.0」となります。
|
【除算(Divide)】
1
2
3
4
|
Decimal d1 = 1m;
Decimal d2 = 2m;
Console.WriteLine(Decimal.Divide(d1, d2));
// → 出力結果は「0.5」となります。
|
除算の場合、綺麗に割り切れない計算結果もでてきますね。その場合はどのように出力されるか、合わせて確認してみましょう。
1
2
3
4
|
Decimal d1 = 1m;
Decimal d2 = 3m;
Console.WriteLine(Decimal.Divide(d1, d2));
// → 出力結果は「0.3333333333333333333333333333」となります。
|
最大有効桁数まで循環小数で表されており、丸め誤差は発生していません。
しかし、実際にこのように出力されると見えにくいですよね。特定の桁数まで出力したい場合は、Roundメソッドを使用すると数値を四捨五入することもできます。例えば、計算結果を小数点以下2桁まで出力してみましょう。
1
2
|
Console.WriteLine(Decimal.Round(Decimal.Divide(d1, d2),2));
// → 出力結果は「0.33」となります。
|
Decimal型の変換
Decimal型から任意の整数型へ変換する場合、小数点以下は切り捨てられ、最も近い整数が返されます。
【Decimal → Int32】
1
2
3
4
|
Decimal d = 10.75m;
int i = Decimal.ToInt32(d);
Console.WriteLine(i);
// → 出力結果は「10」となります。
|
任意の浮動小数点型へ変換する場合は、小数点以下も保持されて返されます。しかし、有効桁数の違いから、<例2>のように精度が落ちる可能性もあるため注意しましょう。
【Decimal → Double】
1
2
3
4
|
Decimal d1 = 10.75m;
double db1 = Decimal.ToDouble(d1);
Console.WriteLine(db1);
// → 出力結果は「10.75」となります。
|
1
2
3
4
|
Decimal d2 = 0.3333333333333333333333333333m;
double db2 = Decimal.ToDouble(d2);
Console.WriteLine(db2);
// → 出力結果は「0.333333333333333」となります。
|
- PG
- なるほど、こんな便利なデータ型があったのですね!
- PL
- そうですね。この機会に、Decimal型を使用してさまざまな計算を行ってみてください。
Decimal型を使って計算ができる
今回はDecimal型を使った計算や型変換を紹介しました。プログラムを組む上で、数値計算は必ずといって良いほど通る道だと思います。既に用意されているクラスやメソッドを活用して、効率良くコーディングを進めていきたいですね。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)