Edited at

String.format で小数を小数点以下のけた数を指定して文字列に変換する

More than 3 years have passed since last update.


Java

小数(Double, Float)を、小数点以下のけた数を指定して文字列に変換する方法です。

String.formatメソッドを用いる方法と、MessageFormat.formatメソッドを用いる方法があります。

どちらの方法であっても、小数の端数は四捨五入されます。(これらのメソッドを用いて切り捨てや切り上げで文字列に変換する方法はないようです。)


Main.java

package com.qiita.ragion;

import java.text.MessageFormat;

public class Main {
public static void main(final String[] args) {
final Double milliseconds = 123.456789d; // ミリ秒が小数で表現されているという想定

final String stringFormat = String.format("%1$.3f ms", milliseconds); // 「3f」の部分でけた数を指定する
final String messageFormat = MessageFormat.format("{0,number,0.000} ms", milliseconds); // 0 の数でけた数を指定する

System.out.println(stringFormat); //-> "123.457 ms"
System.out.println(messageFormat); //-> "123.457 ms"
}
}