129

double の小数の書式設定に問題があります。4.0 などの double 値がある場合、小数を 4.00 にするにはどうすればよいですか?

4

14 に答える 14

237

方法の 1 つはNumberFormatを使用することです。

NumberFormat formatter = new DecimalFormat("#0.00");     
System.out.println(formatter.format(4.0));

出力:

4.00

于 2012-10-09T18:38:18.743 に答える
81

Java 8 では、メソッドを使用できますformat..: -

System.out.format("%.2f", 4.0); // OR

System.out.printf("%.2f", 4.0); 
  • ffloatingポイント値に使用されます。
  • 2小数点以下は、小数点以下の桁数を示します.

ほとんどの Java バージョンでは、以下を使用できますDecimalFormat: -

    DecimalFormat formatter = new DecimalFormat("#0.00");
    double d = 4.0;
    System.out.println(formatter.format(d));
于 2012-10-09T18:38:01.813 に答える
51

String.formatを使用します。

String.format("%.2f", 4.52135);

ドキュメントに従って:

常に使用されるロケールは、 によって返されるものLocale.getDefault()です。

于 2012-10-09T18:37:36.150 に答える
6

常に静的メソッドを使用できprintf from System.outます。その後、対応するフォーマッタを実装します。これにより、他の例で必要なヒープ領域を節約できます。

元:

System.out.format("%.4f %n", 4.0); 

System.out.printf("%.2f %n", 4.0); 

かなり大きなボーナスであるヒープスペースを節約しますが、特にほとんどのプログラマーは C の printf 関数を知っているため (Java は関数/メソッドをわずかに変更します)、この例は他のどの回答よりもはるかに扱いやすいと私は考えています。

于 2012-10-09T18:42:19.610 に答える
4
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
于 2012-10-09T19:00:26.890 に答える
3
new DecimalFormat("#0.00").format(4.0d);
于 2012-10-09T18:39:34.640 に答える
2

setMinimumFractionDigits別の方法は、NumberFormatクラスのメソッドを使用することです。

ここでは基本的に、小数点の後に表示する数字の数を指定します。

したがって、指定した量が 2 であると仮定すると、 の入力は4.0を生成します。4.00

ただし、Double入力に指定された量よりも多くが含まれている場合は、指定された最小量が使用され、切り上げ/切り捨てでさらに 1 桁が追加されます

たとえば、4.15465454指定された最小量が 2 の場合、生成されます4.155

NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));

オンラインで試す

于 2017-11-01T08:42:21.730 に答える
0

100% 動作します。

import java.text.DecimalFormat;

public class Formatting {

    public static void main(String[] args) {
        double value = 22.2323242434342;
        // or  value = Math.round(value*100) / 100.0;

        System.out.println("this is before formatting: "+value);
        DecimalFormat df = new DecimalFormat("####0.00");

        System.out.println("Value: " + df.format(value));
    }

}
于 2016-06-03T12:30:16.913 に答える
-3

最初のインポートNumberFormat。次に、これを追加します。

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

これにより、小数点以下 2 桁が得られ、通貨を扱っている場合はドル記号が表示されます。

import java.text.NumberFormat;
public class Payroll 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
    int hoursWorked = 80;
    double hourlyPay = 15.52;

    double grossPay = hoursWorked * hourlyPay;
    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

    System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
    }

}
于 2015-10-27T22:59:23.017 に答える
-4

次のように実行できます。

double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
于 2012-10-09T18:39:29.503 に答える