# Probleme mit Math.round()



## mrbela (21. Mrz 2007)

Servus!!

Kann mir das einer erklären,

warum


```
System.out.println(Math.round(2.5));
```

3 ergibt

und


```
System.out.println(Math.round(5/2));

bzw

double x = (5/2);

System.out.println(Math.round(x));
```

*2*

ergibt ??????????????

ich finde das irgendwie unlogisch!!


----------



## SlaterB (21. Mrz 2007)

double x = (5/2); 
System.out.println(x);

dann siehst du klarer,

so einfach ist das DezimalRechnen für Computer eben nicht..


----------



## The_S (21. Mrz 2007)

5/2 ist eine Integer Rechnung und hat somit keinen Rest => wird immer abgerundet! Korrekt heißt es

5/2D bzw. 5/(double)2 bzw. 5/2.0


----------



## SlaterB (21. Mrz 2007)

oh, mist, da dachte ich ja was anderes


----------



## mrbela (21. Mrz 2007)

mh, okay... klingt logisch, auch wenn man auf sowas glaub ich nie von alleine draufkäme.. 


danke !


----------



## The_S (21. Mrz 2007)

für solche Dinge hast du dann ein Java-Buch, dass dir den richtigen Umgang mit primitiven Datentypen erläutert  .


----------

