1

私にはString価値があります。そして、私は常に小数点以下2桁をDoubleタイプにする必要があります。したがって、 を取得した場合は、常に double 値500に変換する必要があります。500.00

私の問題は、xxx.00またはのようなものがある場合xxx.x0、parseDouble メソッドが 2 番目の 0 を削除することです。

私のコードは次のようなものです

String number = "500.00";
Double numberToSave = (Double.ParseDouble(number));

そしてnumberToSave戻る500.0

どうすればこれを解決できますか? であっても小数第 2 位を表示する必要があり0ます。

ありがとうございました。

4

5 に答える 5

5

Double意味のない数字を維持するという概念はありません。

問題は、使用しているDouble(またはdouble) 値ではありません。それを文字列に変換する方法です。DecimalFormat適切な小数点以下の桁数を指定するを使用する必要があります。

Double.parseDoubleまた、現在使用している which は a を返しますが、値をボックス化doubleする変数に割り当てていることに注意してください-潜在的に不必要です。Double

サンプルコード:

import java.text.DecimalFormat;

public class Test {
    public static void main(String[] args) {
        String text = "500.00";
        double number = Double.parseDouble(text);

        DecimalFormat format = new DecimalFormat("0.00");
        String formatted = format.format(number);
        System.out.println(formatted);
    }
}

上記のコードでは、使用可能な桁数がさらにある場合でも、2 桁の 10 進数が得られることに注意してください

さらに、正確な 10 進数が重要な場合は、BigDecimal代わりに を使用することを検討してくださいdouble。これは、値が実際に通貨を表す場合に特に重要です。浮動小数点タイプ ( など) と浮動小数点タイプ ( など)の違いを理解し、適切に選択する必要があります。doubleBigDecimal

于 2013-06-24T14:21:32.370 に答える
1

DecimalFormatクラスを使用する必要があります。

このようなものDecimalFormat df = new DecimalFormat("#.##");

Java docsをご覧ください。

于 2013-06-24T14:21:12.983 に答える
1

クラスを調べると、DecimalFormat次のように double をフォーマットするために使用できます。

import java.text.*;

public class FormatDoubleTest
{
    public static void main(String[] args)
    {
        double d1 = 500.00;
        double d2 = 500.001;
        double d3 = 500.009;

        DecimalFormat df = new DecimalFormat("0.00");

        System.out.println(df.format(d1));
        System.out.println(df.format(d2));
        System.out.println(df.format(d3));

    }
}
于 2013-06-24T14:21:45.950 に答える