# Kommazahlen ausgeben



## Reen (17. Jun 2007)

Hallo!

Wie kann ich in Java mit Kommazahlen rechnen. Ich brauche eine Funktion, die immer auf die nächst höhere Zahl aufrundet. Aber ich habe schon das Problem, dass selbst bei Dezimalbrüchen, die ja im Erg. ein Komma haben, als Ganzzahl ausgegeben werden.

z.B. 

```
public static void main(String[] args) throws ClassNotFoundException, IOException {
		
		double i = (2349/2048);
		
		System.out.printf("%.2f", i);
		//System.out.println(Math.ceil((i)));
	}
```

gibt immer Ganzzahl "1" aus! Warum das denn??

Danke
Reen


----------



## Hilefoks (17. Jun 2007)

```
double i = (2349.0/2048);
```


----------



## Malchow (17. Jun 2007)

Die Lösung ist relativ simpel. Java nimmt für die Zahlen immer standartmäßig INT an wenn man INT-Zahlen durcheinander teilt erhält man immer nur ganzzahlige Ergebnisse.
Also musst du die Variabeln die du teilst vorher deklarieren.

Das sieht dann so aus:


```
public static void main(String[] args) throws ClassNotFoundException, IOException {
      double a = 2349;
      double b = 2048;
      double i = (a/b);
      
      System.out.printf("%.2f", i);
      //System.out.println(Math.ceil((i)));
   }
```

Ich hoffe ich konnte dir damit helfen!


----------



## Reen (17. Jun 2007)

Danke.....

das ist aber doof von Java, dass ich immer irgendwas Komma machen muss, dass dann die Ausgabe mit Komma dargestellt wird.

Was mache ich, wenn ich nur ganze Zahlen habe, die aber auf Komma rechnen muss und dann die Math.ceil Funktion drauf anwenden möchte? Ich will doch nich umständlich meine ganze Zahl um eine .0 erweitern.

gruss
Reen


----------



## Wildcard (17. Jun 2007)

Das ist nicht 'doof', sondern den lexikalischen Strukturen die zum Parsen erforderlich sind geschuldet.
Entweder .0 dahinter, oder casten.


----------



## Reen (17. Jun 2007)

Hallo Wildcard...


...wie meinste das mit dem casten? Haste mal ein Bsp?

thx


----------



## Wildcard (17. Jun 2007)

```
System.out.println(15/(double)7);
```


----------



## Reen (17. Jun 2007)

Dangöööööööö


----------



## HoaX (17. Jun 2007)

oder einfach


```
double i = (1d/2d);
```

es ist auf "f" für float, anstatt "d" möglich


----------

