Konvertieren Sie double in BigDecimal und stellen Sie BigDecimal Precision ein

In Java möchte ich einen doppelten Wert in einen konvertierenBigDecimal und drucke seinen String-Wert mit einer bestimmten Genauigkeit aus.

import java.math.BigDecimal;
public class Main {
    public static void main(String[] args) {
        double d=-.00012;
        System.out.println(d+""); //This prints -1.2E-4

        double c=47.48000;
        BigDecimal b = new BigDecimal(c);
        System.out.println(b.toString()); 
        //This prints 47.47999999999999687361196265555918216705322265625 
    }
}

Es druckt diese riesige Sache:

47.47999999999999687361196265555918216705322265625

und nicht

47,48

Der Grund warum ich das macheBigDecimal Die Konvertierung ist manchmal so, dass der doppelte Wert viele Dezimalstellen enthält (d. h.-.000012) und beim Konvertieren des Double in einen String wird eine wissenschaftliche Notation erzeugt-1.2E-4. Ich möchte den String-Wert in nicht wissenschaftlicher Schreibweise speichern.

Ich möchte, dass BigDecimal immer zwei Genauigkeitseinheiten wie diese hat: "47,48". Kann BigDecimal die Genauigkeit bei der Konvertierung in einen String einschränken?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage