続・とってもわかりやすいJAVA 【キャストを利用して小数部の最大桁数を決める】


小数の計算を行うと、小数部が長くなってしまうことがありますね。
たとえば10.0 / 6.0なんか求めたら、1.6666666……と6が続いていきます。
そういった場合、出力したい小数部の桁数を決めることができれば、計算結果をより見やすくすることができます。

そういった場合はFomatterクラスやStringクラスに用意されているformatメソッドを使用すると可能になりますが、
実はキャストをうまく利用すると桁数を決めることができます。

ではまずサンプルです。

 

DecimalDigitsSample_01.java

public class DecimalDigitsSample_01 {
    public static void main(String[] args) {
        double d = 10.0 / 6.0;
        System.out.println(d);
    }
}

 

実行結果

1.6666666666666667

不動小数の計算は誤差が出るので注意です。

これを小数第2位までの表示にしてみたいと思います。

 

手順

  1. 100をかけて166.66666666666667にする。
  2. int型にキャストして小数部を切り捨ててしまう。
  3. 166を100で割って1.66にする。

これで小数第2位までの表記となります。
今回はメソッドとして作ってみます。

 

DecimalDigitsSample_02.java

public class Sample {
    public static void main(String[] args) {
        double num = 10.0 / 6.0;
        System.out.println(formatDouble(num));
    }

    static double formatDouble(double num) {
        double d1 = num * 100; // 手順1
        int i = (int)d1;       // 手順2
        double d2 = i / 100.0; // 手順3
        return d2;
    }
}

 

実行結果

1.66

無事小数第2位までの表記となりました!

ちなみに手順1~3を一行で書くと以下のようになります。

(int)(num * 100) / 100.0
  • このエントリーをはてなブックマークに追加

PAGE TOP