Axel Richter: Zahlenformate

Beitrag lesen

Hallo,

ich hätte zwei Fragen:

  1. Ich möchte eine double-Zahl (Ergebnis einer Division) runden lassen. Wenn ich die round-Funktion benutze, bekomme ich eine int-Zahl mit 0 Kommastellen heraus. Wie kann ich aber eine double-Zahl z.B. auf 2 oder 3 Kommastellen genau runden lassen?

import java.math.*;
class test1 {
    public static void main(String[] args) {
        double d = 1.23456789;
        //runden auf 2 Stellen
        double dr = ((int)(d*1e2+.5))/(double)1e2;
        System.out.println(dr);
        //runden auf 3 Stellen
        dr = ((int)(d*1e3+.5))/(double)1e3;
        System.out.println(dr);
        //runden auf 4 Stellen
        dr = ((int)(d*1e4+.5))/(double)1e4;
        System.out.println(dr);

//oder http://java.sun.com/j2se/1.3/docs/api/java/math/BigDecimal.html
        BigDecimal bd = new BigDecimal(d);
        //runden auf 2 Stellen
        BigDecimal bdr = bd.setScale(2, BigDecimal.ROUND_HALF_EVEN);
        System.out.println(bdr);
        //runden auf 3 Stellen
        bdr = bd.setScale(3, BigDecimal.ROUND_HALF_EVEN);
        System.out.println(bdr);
        //runden auf 4 Stellen
        bdr = bd.setScale(4, BigDecimal.ROUND_HALF_EVEN);
        System.out.println(bdr);
    }
}

  1. Ich habe ein Datum als long-Wert vorliegen. Wie mache ich daraus eine Zeichenkette der Form dd.mm.yyyy?

Zeige doch mal Dein Datum als long-Wert. Das kann ich mir nämlich nicht so recht vorstellen. Ansonsten:

import java.util.*;
import java.text.*;
class test {
    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(new SimpleDateFormat("E, dd.MM.yyyy").format(d));
    }
}

viele Grüße

Axel