it-swarm.com.de

Wie rundet man den Doppelwert auf 2 Dezimalstellen?

Mögliches Duplikat:
runde doppelte bis zwei Dezimalstellen in Java

Ich möchte den doppelten Wert auf 2 Dezimalstellen aufrunden.

zum Beispiel: Ich habe double d = 2; und das Ergebnis sollte result = 2.00 sein

34
Rakesh Sabbani

Es gibt keinen Unterschied in der internen Darstellung zwischen 2 und 2.00. Sie können Math.round um einen Wert auf die nächste Ganzzahl zu runden - um diese auf 2 Dezimalstellen zu runden, können Sie mit 100 multiplizieren, runden und dann durch 100 dividieren, aber Sie sollten nicht erwarten, dass das Ergebnis genau ist 2dps, aufgrund der Art der binären Gleitkomma-Arithmetik.

Wenn Sie sich nur für Formatierung einen Wert mit zwei Dezimalstellen interessieren, schauen Sie sich DecimalFormat an - wenn Sie sich für eine Anzahl von Dezimalstellen interessieren Orte während der Berechnung Sie sollten wirklich BigDecimal verwenden. Auf diese Weise wissen Sie, dass es sich wirklich um Dezimalstellen handelt und nicht um "den nächsten verfügbaren double Wert".

Eine andere Möglichkeit, die Sie in Betracht ziehen sollten, wenn Sie always mit zwei Dezimalstellen zu tun haben, besteht darin, den Wert als long oder BigInteger zu speichern, in dem Wissen, dass dies der Fall ist genau das 100-fache des "echten" Wertes - zum Beispiel, um effektiv Cent statt Dollar zu speichern.

29
Jon Skeet
Math.round(number*100.0)/100.0;
57
Jigar Joshi
double RoundTo2Decimals(double val) {
            DecimalFormat df2 = new DecimalFormat("###.##");
        return Double.valueOf(df2.format(val));
}
33
Razan Paul
import Java.text.DecimalFormat;

public class RoundTest {
    public static void main(String[] args) {
        double i = 2;    
        DecimalFormat twoDForm = new DecimalFormat("#.00");
        System.out.println(twoDForm.format(i));
        double j=3.1;
        System.out.println(twoDForm.format(j));
        double k=4.144456;
        System.out.println(twoDForm.format(k));
    }
}
14
Rakesh Sabbani

Ich vermute mal, dass du eine formatierte Ausgabe brauchst.

System.out.printf("%.2f",d);
12

sie können diesen Code auch verwenden

public static double roundToDecimals(double d, int c)  
{   
   int temp = (int)(d * Math.pow(10 , c));  
   return ((double)temp)/Math.pow(10 , c);  
}

Hiermit können Sie steuern, wie viele Zahlen nach dem Punkt benötigt werden.

d = number to round;   
c = number of decimal places  

denke, es wird hilfreich sein

10
avirk

Das würde es tun.

     public static void main(String[] args) {
        double d = 12.349678;
        int r = (int) Math.round(d*100);
        double f = r / 100.0;
       System.out.println(f);
     }

Sie können diese Methode kurzschließen, es ist leicht zu verstehen, warum ich so geschrieben habe.

5
Ankit
public static double addDoubles(double a, double b) {
        BigDecimal A = new BigDecimal(a + "");
        BigDecimal B = new BigDecimal(b + "");
        return A.add(B).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
3
Atish Narlawar