geekProgrammer

2次元に恋するプログラマ

Java DecimalFormatを用いたフォーマット(ゼロ埋め)

qiitaにも投稿したのですが、こちらのブログにも投稿します。

 

仕事でDecimaFomatを使いました。これを使うと簡単にゼロ埋めが可能です!

しかも条件によって桁数を変えたい時とかはすごく便利!

 

ある値をゼロ埋めしたいとき、さらに条件によって桁数を変えたいときはNumberFormatのサブクラスである
DecimalFormatを用いると簡単です。

Sample
import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * DecimalFormatを用いたゼロ埋め
 * @author owner
 *
 */
public class Sample {
    public static void main(String[] args) {

        DecimalFormat format = new DecimalFormat("#.#");

        // 小数点以下の最小値
        format.setMinimumFractionDigits(2);
        // 小数点以下の最大値
        format.setMaximumFractionDigits(2);

        BigDecimal number = new BigDecimal(1000);

        System.out.println(format.format(number));
    }
}

上記のサンプルでは小数点以下の表示する桁数を2桁に指定しています。
結果は下記のとおりです。

結果
1000.00

setMinimumFractionDigitsとsetMaximumFractionDigitsの引数に表示したい桁数を入力するだけです。
ちなみに値は自由に変更することができます。

小数点以下をの表示桁数を10に変更
import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * DecimalFormatを用いたゼロ埋め
 * @author owner
 *
 */
public class Sample {
    public static void main(String[] args) {

        DecimalFormat format = new DecimalFormat("#.#");

        // 小数点以下の最小値
        format.setMinimumFractionDigits(10);
        // 小数点以下の最大値
        format.setMaximumFractionDigits(10);

        BigDecimal number = new BigDecimal(1000);

        System.out.println(format.format(number));
    }
}
結果
1000.0000000000

あらかじめ小数点が表示されている場合

あらかじめ小数点が表示されている場合でもそれを含めた桁数が指定した値になります。

あらかじめ小数点が表示されている場合
import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * DecimalFormatを用いたゼロ埋め
 * @author owner
 *
 */
public class Sample {
    public static void main(String[] args) {

        DecimalFormat format = new DecimalFormat("#.#");

        // 小数点以下の最小値
        format.setMinimumFractionDigits(5);
        // 小数点以下の最大値
        format.setMaximumFractionDigits(5);

        BigDecimal number = new BigDecimal(1000.05);

        System.out.println(format.format(number));
    }
}
結果
1000.05000

小数点以下以外のゼロ埋め

小数点以下の桁数ではなく、整数値部分でもゼロ埋めをすることが可能です。
小数点以下の桁数の指定はsetMinimumFractionDigits()とsetMaximumFractionDigits()を使用しましたが
整数値部分の指定はsetMinimumIntegerDigits()とsetMaximumIntegerDigits()の引数に表示したい桁数を入力します。

指定方法
小数点以下の桁数の指定
setMinimumFractionDigits(最小値)
setMaximumFractionDigits(最大値)

整数値部分の桁数の指定
setMinimumIntegerDigits(最小値)
setMaximumIntegerDigits(最大値)
Sample
import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * DecimalFormatを用いたゼロ埋め
 * @author owner
 *
 */
public class Sample {
    public static void main(String[] args) {

        DecimalFormat format = new DecimalFormat("#.#");

        // 小数点以下の最小値
        format.setMinimumFractionDigits(5);
        // 小数点以下の最大値
        format.setMaximumFractionDigits(5);
        // 整数値の最小値
        format.setMinimumIntegerDigits(5);
        // 整数値の最大値
        format.setMaximumIntegerDigits(5);

        BigDecimal number = new BigDecimal(1000.05);

        System.out.println(format.format(number));
    }
}
結果
01000.05000

DecimalFormatを使うとユーザが指定した形にフォーマットが出来る!