Merkwürdigkeit mit manueller Rundung

Status
Nicht offen für weitere Antworten.
B

Blurry

Gast
Moin,

hab ich irgendwie ein Brett vorm Kopf, zu viel gesoffen oder bin einfach nur zu dämlich? Folgendes...

Code:
double bla = Math.round(5.1234 * 100);
bla = bla / 100;

Das ergibt wie erwartet 5.12 für "bla". Die verkürzte Schreibweise lautet doch eigentlich:

Code:
double bla = Math.round(5.1234 * 100) / 100;

Bloß liefert das 5.0. Wieso? Als würde die Round-Funktion die Division hinter dem Parameter mit einbeziehen. Ich steh grad total aufm Schlauch. Aber dafür gibt's bestimmt eine einfache Erklärung. Und wo wir schon mal dabei sind, wie geht das eleganter? Wie rundet man etwa auf zwei Nachkommastellen, ohne sich so einen abzubrechen?

round(zahl, 2) zum Beispiel. Geht aber leider nicht. :?
 

masu

Mitglied
so ist das möglich ...

Code:
double bla = Math.round( 5.1234 * 100. ) / 100.;

eine andere möglichkeit wäre es , das ganze mit decimalformat zu machen!
 
B

Blurry

Gast
Ah,

danke für die Antwort. Richtig verstehen tu ich's trotzdem nicht. Okay, die Punkte fehlten und es wurde wohl irgendwie mit Integern gerechnet. Aber wieso ging dann die zweizeilige Version?

Decimalformat? Ok, guck ich mir mal an. Thx.
 

Weima

Mitglied
Aber wieso ging dann die zweizeilige Version?
Das die zweizeilige Version ging wird wohl mit dem Typcasting zusammenhängen.
Bei Math.round(bla * 100) entsteht entsprechend ein double-Wert (die 100 wird automatisch gecastet). Mit bla / 100 wird dann wie vorher 100 in nen double-Wert umgewandelt und es entsteht wieder ein errechneter double-Wert.
Bei dem anderen kann es nur so sein, dass das / 100 nicht richtig gecastet wird und der errechnet nen int (schneidet also die Nachkommastellen weg). Danach muss er in double casten und da macht er einfach 5.0 drauß...
 
G

Gast

Gast
steht sogar auf der gleichen seite, man muss nur ein bisschen kucken:

[link]http://www.java-forum.org/de/viewtopic.php?t=12473[/link]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben