erstaunliches Rechenergebnis

Status
Nicht offen für weitere Antworten.

Bit2_Gosu

Bekanntes Mitglied
Hallo.

Warum zum Teufel führt System.out.println(1 / 1000.0); zur Ausgabe "0.0010" und nicht "0.001" ??

Das nervt mich wirklich sehr und ich verstehe es auch nicht. Ich weiß ja, dass bestimmte Dezimalzahlen in binärer Schreibweise nicht in endlich Stellen dargestellt werden können, aber hier entsteht nicht die Ausgabe "0.0010000000001" o.ä. sondern eben "0.0010".

Bitte klärt mich auf!
 

Wildcard

Top Contributor
Woher soll denn ein PrintStream exakt wissen wie du eine Gleitkommazahl sehen möchtest? Das musst du schon selbst mit printf String#format und dergleichen erledigen.
 

Landei

Top Contributor
System.out.println kannst du nehmen, wenn dich nur der Wert interessiert. Wenn es "hübsch" aussehen soll, hast du doch jede Menge Möglichkeiten: NumberFormat, BigDecimal, Formatter...
 

Bit2_Gosu

Bekanntes Mitglied
ich hab mir die Klassen mal angeschaut. NumberFormat kann genau das, was ich will. Nur leider wandelt es "0.1" ind "0,1" um und ich habe keine Funktion gefunden, mit der man den Separator setzen kann..

jemand eine Idee?
 

Wildcard

Top Contributor
Du verwendest ein Locale spezifisches Format. Das ',' entspricht im Gegensatz zum '.' übrigens der ISO Norm ;)

Auch wenn die ISO seit OOXML wohl keinen Wert mehr hat
 
Status
Nicht offen für weitere Antworten.

Oben