この記事では小数を切り捨てる方法についてまとめて紹介しています。
こんな方にオススメの記事
- 少数の小数点以下を切り捨てたい
- 小数点の第2位を切り捨てたい
- 小数点以下の桁数を指定して切り捨てたい
ぜひ最後まで読んでみてください。
オススメの参考書
C#の使い方が丁寧に解説しており、「基礎からしっかりと学びたい」という初心者の方にオススメの一冊です。サンプルコードも記載してあり、各章の最後に復習問題があるので理解度を確認しながら読み進めることができます。新しい C# のバージョンにも対応している書籍です。
C#で小数を切り捨てるには?
Math クラスの Floor メソッドと Truncate メソッドは正数(プラス値)の場合は、切り捨てた結果は変わりませんが、負数(マイナス値)の場合に以下のように結果が変わります。
他にも小数を int 型へキャストすることで小数点以下を切り捨てることが可能です。
メソッド | 内容 | 正数 | 負数 |
---|---|---|---|
Floor | 小さい方向へ丸めて切り捨てる | 3.1 → 3 | -3.1 → -4 |
Truncate | 0に近い値になるように切り捨てる | 3.1 → 3 | -3.1 → -3 |
(int) | int型へキャストする。Truncateと同じ動作をする | 3.1 → 3 | -3.1 → -3 |
切り捨てる(Math.Floorメソッド)
Math クラスの静的な Floor メソッドを使用して切り捨てる方法です。
public static double Floor (double d);
Floor メソッドは小数点の第1位を切り捨てて、整数値を double 型で返します。
静的なメソッドなのでインスタンスを別途生成する必要はなく、ソースファイルのヘッダー部分に名前空間 System を定義するだけで使うことができます。
小数点の第1位で切り捨てる方法
Floor メソッドを呼び出せば、簡単に小数点の第1位を切り捨てることができます。
使用例を以下に記述します。
double d1 = 3.14;
double reslut1 = Math.Floor(d1);
// 実行結果:3
double d2 = 3.86;
double reslut2 = Math.Floor(d2);
// 実行結果:3
double d3 = -3.14; //(マイナス値の場合)
double reslut3 = Math.Floor(d3);
// 実行結果:-4
double d4 = -3.86; //(マイナス値の場合)
double reslut4 = Math.Floor(d4);
// 実行結果:-4
小数点の第2位で切り捨てる方法
Floor メソッドは桁数の指定ができないので、小数点の第2位を切り捨てるには次のようにします。
- 対象の小数に10を掛けて、小数点を右にずらします。
(3.14 * 10 = 31.4) - Floor メソッドを使用して小数点以下を切り捨てます。
(31.4 → 31) - 対象の値を10で割って、小数点を左へずらします。
(31 / 10 = 3.1)
上記の方法をコードに直すと次のようになります。
double d1 = 3.14;
double reslut1 = Math.Floor(d1 * 10) / 10;
// 実行結果:3.1
double d2 = 3.86;
double reslut2 = Math.Floor(d2 * 10) / 10;
// 実行結果:3.8
double d3 = -3.14; //(マイナス値の場合)
double reslut3 = Math.Floor(d3 * 10) / 10;
// 実行結果:-3.2
double d4 = -3.86; //(マイナス値の場合)
double reslut4 = Math.Floor(d4 * 10) / 10;
// 実行結果:-3.9
小数点の第 N 位で切り捨てる方法
少数点の第2位で切り捨てるときは10倍しましたが、少数点の第3位で切り捨てるときは100倍にします。Floor メソッドで切り捨てた後、掛けた値で割って元の桁に戻します。
このことを応用編して、小数点の第N位で切り捨てる独自メソッドを作成してみましょう。
- 10の N 乗をして対象の小数に掛けて、小数点を右にずらします。
(3.14 * 10^N) - Floor メソッドを使用して小数点以下を切り捨てます。
- 対象の値を10の N 乗で割って、小数点を左へずらします。
(31 / 10^N )
10のN乗は Math クラスの Pow メソッドを使用して独自メソッドを作成します。
public static double TruncateNumbers(double value, int n)
{
double powValue = Math.Pow(10, n);
return Math.Floor(value * powValue) / powValue;
}
このメソッドで小数の切り捨てを実行すると次のようになります。
double reslut1 = TruncateNumbers(3.14, 0); //小数の第1位で切り捨て
// 実行結果:3
double reslut2 = TruncateNumbers(3.14, 1); //小数の第2位で切り捨て
// 実行結果:3.1
double reslut3 = TruncateNumbers(3.14, 2); //小数の第3位で切り捨て
// 実行結果:3.14
double reslut4 = TruncateNumbers(-3.14, 0); //小数の第1位で切り捨て
// 実行結果:-4
double reslut5 = TruncateNumbers(-3.14, 1); //小数の第2位で切り捨て
// 実行結果:-3.2
double reslut6 = TruncateNumbers(-3.14, 2); //小数の第3位で切り捨て
// 実行結果:-3.14
切り捨てる(Math.Truncateメソッド)
Math クラスの静的な Truncate メソッドを使用して切り捨てる方法です。
public static double Truncate (double d);
Truncate メソッドは小数点の第1位を切り捨てて、整数値を double 型で返します。
静的なメソッドなのでインスタンスを別途生成する必要はなく、ソースファイルのヘッダー部分に名前空間 System を定義するだけで使うことができます。
小数点の第1位で切り捨てる方法
Truncate メソッドを呼び出せば、小数点の第1位を切り捨てることができます。
使用例を以下に記述します。
double d1 = 3.14;
double reslut1 = Math.Truncate(d1);
// 実行結果:3
double d2 = 3.86;
double reslut2 = Math.Truncate(d2);
// 実行結果:3
double d3 = -3.14; //(マイナス値の場合)
double reslut3 = Math.Truncate(d3);
// 実行結果:-3
double d4 = -3.86; //(マイナス値の場合)
double reslut4 = Math.Truncate(d4);
// 実行結果:-3
小数点の第2位で切り捨てる方法
Floor メソッドと同じように Truncate メソッドを使って、小数点の第2位で切り捨てることができます。
double d1 = 3.14;
double reslut1 = Math.Truncate(d1 * 10) / 10;
// 実行結果:3.1
double d2 = 3.86;
double reslut2 = Math.Truncate(d2 * 10) / 10;
// 実行結果:3.8
double d3 = -3.14; //(マイナス値の場合)
double reslut3 = Math.Truncate(d3 * 10) / 10;
// 実行結果:-3.1
double d4 = -3.86; //(マイナス値の場合)
double reslut4 = Math.Truncate(d4 * 10) / 10;
// 実行結果:-3.8
小数点の第 N 位で切り捨てる方法
Floor メソッドと同じように Truncate メソッドを使って、小数点の第N位で切り捨てることができます。
public static double TruncateNumbers(double value, int n)
{
double powValue = Math.Pow(10, n);
return Math.Truncate(value * powValue) / powValue;
}
このメソッドで小数の切り捨てを実行すると次のようになります。
double reslut1 = TruncateNumbers(3.14, 0); //小数の第1位で切り捨て
// 実行結果:3
double reslut2 = TruncateNumbers(3.14, 1); //小数の第2位で切り捨て
// 実行結果:3.1
double reslut3 = TruncateNumbers(3.14, 2); //小数の第3位で切り捨て
// 実行結果:3.14
double reslut4 = TruncateNumbers(-3.14, 0); //小数の第1位で切り捨て
// 実行結果:-3
double reslut5 = TruncateNumbers(-3.14, 1); //小数の第2位で切り捨て
// 実行結果:-3.1
double reslut6 = TruncateNumbers(-3.14, 2); //小数の第3位で切り捨て
// 実行結果:-3.14
切り捨てる(int型にキャスト)
小数を int 型でキャストすると、小数点の第1位を切り捨てて整数値を int 型にします。
Truncate メソッドと同じ挙動をするのですが、異なる点は小数点以下を切り捨てた値が double 型ではなく int 型へ変更になる点です。
小数点の第1位で切り捨てる方法
int 型でキャストした場合の使用例を以下に記述します。
double d1 = 3.14;
int reslut1 = (int)d1;
// 実行結果:3
double d2 = 3.86;
int reslut2 = (int)d2;
// 実行結果:3
double d3 = -3.14; //(マイナス値の場合)
int reslut3 = (int)d3;
// 実行結果:-3
double d4 = -3.86; //(マイナス値の場合)
int reslut4 = (int)d4;
// 実行結果:-3
最後に
小数を切り捨てるには、Math クラスの Floor メソッドと Truncate メソッド、または int 型へキャストします。
それぞれの使い方と挙動について紹介していますので、参考にしてみてください。
小数の切り上げ方についても紹介していますので、興味がある方は以下の記事を見てみてください。
以上、最後まで読んで頂きありがとうございました。