C#

【C#】小数を切り捨てる方法をまとめて紹介(小数点の処理)

この記事では小数を切り捨てる方法についてまとめて紹介しています。

ぜひ最後まで読んでみてください。

こんな方にオススメの記事
  • 少数の小数点以下を切り捨てたい
  • 小数点の第2位を切り捨てたい
  • 小数点以下の桁数を指定して切り捨てたい

小数を切り捨てる

Math クラスの Floor メソッドTruncate メソッドは正数(プラス値)の場合は、切り捨てた結果は変わりませんが、負数(マイナス値)の場合に以下のように結果が変わります。

他にも小数を int 型へキャストすることで小数点以下を切り捨てることが可能です。

ソッド内容正数負数
Floor小さい方向へ丸めて切り捨てる3.1 → 3-3.1 → -4
Truncate0に近い値になるように切り捨てる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位を切り捨てるには次のようにします。

  1. 対象の小数に10を掛けて、小数点を右にずらします。
    (3.14 * 10 = 31.4)
  2. Floor メソッドを使用して小数点以下を切り捨てます。
    (31.4 → 31)
  3. 対象の値を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位で切り捨てる独自メソッドを作成してみましょう。

    1. 10の N 乗をして対象の小数に掛けて、小数点を右にずらします。
      (3.14 * 10^N)
    2. Floor メソッドを使用して小数点以下を切り捨てます。
    3. 対象の値を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

    注意点:小数点がマイナスの場合は、0に近い値になるように切り捨てされます。

     

    小数点の第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

      注意点:小数点がマイナスの場合は、0に近い値になるように切り捨てされます。

       

      最後に

      小数を切り捨てるには、Math クラスの Floor メソッドTruncate メソッド、または int 型へキャストします。

      それぞれの使い方と挙動について紹介していますので、参考にしてみてください。

      小数の切り上げ方についても紹介していますので、興味がある方は以下の記事を見てみてください。

      【C#】小数点を切り上げする方法を紹介(Math.Ceiling)C#で小数点を切り上げるにはMathクラスのCeilingメソッドを使います。Ceilingメソッドは小数第1位の切り上げするメソッドです。小数点の位置をシフトさせることで小数第2位や小数第3位の切り上げも可能です。...

      以上、最後まで読んで頂きありがとうございました。

      プログラミングを学習したいなら…

      プログラミングスキルを身に付けるなら、プログラミングを効率良く学べる
      プログラミングスクール」がオススメです。

      特にこんな方にオススメ!!
      これからエンジニアを目指したい
      プログラミングの専門性を高めたい
      プログラミングを学んで副業をしたい
      エンジニアに転職して年収をアップさせたい

      プログラミングを触ったことがない未経験からでも、プログラミングスクールで学習すれば、エンジニアへ就職・転職することも可能です。

      あなたの「行動力」と「やる気」で、あなたの人生を大きく変えるチャンスになることでしょう。

      プログラミングスクールに興味がある方は是非チェックしてみてください。

      > プログラミングを学ぶ <

      COMMENT

      メールアドレスが公開されることはありません。

      CAPTCHA