Format der BigDecimal-Zahl
BigDecimal val = BigDecimal.valueOf(0.20);
System.out.println(a);
Will ich speichern in val Wert 0.20
und nicht 0.2
. Was kann ich tun ?
Ich glaube nicht, dass ich verwenden können NumberFormat
in diesem Fall, wenn ich NumberFormat
ich muss wissen, was die Länge meiner Dezimalzahl ist! Ich kann 0.20 oder 0.5000, ich weiß nicht die genaue Länge meiner Dezimalzahl, so kann ich nicht verwenden :
DecimalFormat df = new DecimalFormat("#0.00");
oder
DecimalFormat df = new DecimalFormat("#0.00000");
vielleicht habe ich auch nur 2 zahlen nach dem Punkt oder 5 zahlen oder mehr, und dieses Programm funktioniert nicht:
BigDecimal a = BigDecimal.valueOf(0.20);//i give an example of 0.2 i can have 0.98...0
System.out.println(a);
NumberFormat nf1 = NumberFormat.getInstance();
System.out.println(nf1.format(0.5000));
Ich das akzeptieren, aber es ist immer noch 0 !! was kann ich tun ?
InformationsquelleAutor Mehdi | 2012-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie den String-Konstruktor von BigDecimal. Es bewahrt die Waage (das ist, was Sie wollen).
Sehen http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.String)
Sie verstehe nicht, Ihr problem. Bitte Lesen Sie die BigDecimal-javadoc-ersten.
InformationsquelleAutor michael667
BigDecimal, erinnert sich der trailing-zeros - mit einigen wichtigen Nebeneffekt:
drucken
Und wir müssen uns daran erinnern, dass wir nicht verwenden können, BiGDecimal für zahlen, wo die Nachkommastellen eine Periode:
wird eine exception werfen (was teilweise Antworten Ihre Bedenken in Ihren Kommentaren)
(versuchen Sie, erstellen Sie Sie mit einem Wert, wo die Anzahl der Dezimalstellen größer als die maximale Länge der Zeichenfolge 😉 )
+1: nützliche Informationen.
InformationsquelleAutor Andreas_D
Du bist die übergabe eines Doppel zu
BigDecimal.valueOf()
. Und0.20
ist genau das gleiche als Doppel -0.2
. Übergeben Sie eine Zeichenfolge, und das Ergebnis wird anders sein, weil das Ausmaß der BigDecimal-abgeleitet von der Anzahl der Nachkommastellen im String:InformationsquelleAutor JB Nizet
EDIT: diese Antwort ist falsch, wie schon in den Kommentaren 😐 thx Andreas_D
Das problem ist, dass es keinen mathematischen Unterschied zwischen 0,2 und 0,20, so Ihre einzige chance ist die Anzeige eine bestimmte Anzahl von Ziffern nach dem Dezimalpunkt. Sobald Sie speichern, 0,2 oder 0.20 in einer
BigDecimal
Sie sind nicht zu unterscheidend von einanderoohh sorry! wusste nicht, dass 😐
(Ich auch, zuerst, und es hat mich Stunden debug-code, wo
InformationsquelleAutor Jonas Adler