C# - 少数を切り捨てする

少数を切り捨てるには「Math.Truncate」または「Math.Floor」メソッドを使用します。

少数の切り捨て方法

「Math.Truncate」メソッドと「Math.Floor」メソッドは 引数に少数を渡すと、小数第一位で切り捨てした値を返します。
using System;

切り捨て結果 =  Math.Truncate(少数);
using System;

切り捨て結果 =  Math.Floor(少数);

サンプルコード

using System;

// 0.987654321 を Math.Truncate で切り捨て -> 結果 = 0
double truncateResult = Math.Truncate(0.987654321);
System.Console.WriteLine($"Math.Truncate(0.987654321d)の結果={truncateResult}");

// 0.987654321 を Math.Floor で切り捨て -> 結果 = 0
double floorResult = Math.Floor(0.987654321d);
System.Console.WriteLine($"Math.Floor(0.987654321d)の結果={floorResult}");
実行結果 実行結果

Math.Truncate と Math.Floor の違い

マイナス値を切り捨てるとき Floor は 0 から 遠ざかり、 Truncate は 0 に近づきます。プラス値の場合、同じ結果が返ります。
元の値 Truncateの結果 Floorの結果
0.1 0 0
0.9 0 0
1.1 1 1
1.9 1 1
-0.1 0 -1
-0.9 0 -1
-1.1 -1 -2
-1.9 -1 -2

桁数を指定して切り捨て

Math.Truncate メソッドと Math.Floor メソッドは桁数の指定に対応していません。 小数第二位で切り捨てする場合は「切り捨て前に 10 を 掛け、切り捨て後に 10 で 割る」等をして計算します。

小数第二位で切り捨て(n.nnn -> n.n にする)

切り捨て結果 =  Math.Truncate(少数 * 10) / 10;
切り捨て結果 =  Math.Floor(少数 * 10) / 10;

小数第三位で切り捨て(n.nnn -> n.nn にする)

切り捨て結果 =  Math.Truncate(少数 * 100) / 100;
切り捨て結果 =  Math.Floor(少数 * 100) / 100;

サンプルコード

using System;

// Math.Truncate を使用し、0.987654321 を少数第二位で切り捨て -> 結果 = 0.9
double truncateResult = Math.Truncate(0.987654321d * 10) / 10;
System.Console.WriteLine($"0.987654321d を少数第二位で切り捨てた結果={truncateResult}");

// Math.Floor を使用し、0.987654321 を少数第三位で切り捨て -> 結果 = 0.98
double floorResult = Math.Floor(0.987654321d * 100) / 100;
System.Console.WriteLine($"0.987654321d を少数第三位で切り捨てた結果={floorResult}");

切り捨てしたい桁数が変動する場合

Math.Pow メソッドを組み合わせ、切り捨てる桁数を変更できるようにします。Math.Pow メソッドは引数に 「基数と指数」 を渡すと、「累乗した数」を返します。
切り捨て結果 =  Math.Truncate(少数 * Math.Pow(10, 切り捨てたい桁数)) / Math.Pow(10, 切り捨てたい桁数);
切り捨て結果 =  Math.Floor(少数 * Math.Pow(10, 切り捨てたい桁数)) / Math.Pow(10, 切り捨てたい桁数);

検証環境

関連ページ