Double Ausgabe nicht wissenschaftlich

Fohnbit

Top Contributor
Hallo,

ich habe folgende Formel:
Java:
val = 0.0025 * value - 0.01;
value = 4.3

das ergibt: 0,00075

Nun möchte ich dies auf 5 Stellen gerundet ausgeben:
Java:
val = round(val, 5);
System.out.println(val);

private double round(double value, int decimalPoints) {
        double d = Math.pow(10, decimalPoints);
        return Math.round(value * d) / d;
    }

Bekomme aber immer:
7.5E-4

Wo ist mein Fehler?
Warum ist die Ausgabe nicht 0,00075

Vielen Dank!
 
Ja, ich muss aber das double weiter geben und es wird dort ausgeben.
Daher muss ich den Double Wert mit 5 Stellen haben ... also nicht als String!

oder muss ich zu String und dann wieder zu double?
 
Ich habe gerade etwas getestet:
Kann Java kein double mit 4 Nachstellenkommas als normale Zahl ausgeben?
Java:
double test = 0.0007;
System.out.println(test);
ergibt 7.0E-4

Java:
double test = 0.007;
System.out.println(test);
ergibt 0.007
 
Also ganz langsam:
Erst einmal ist das halt die Ausgabe dieser double Zahl. Die Zahl selbst ist einfach eine Zahl und hat einfach einen Wert.

Was Du aber nun haben willst ist eine spezielle Ausgabe. Und das sind ja Zeichen. Und das ist tatsächlich streng genommen ein String.
Und entweder du hast eine Ausgabe Methode, die die Formatierung mit entgegen nimmt oder du musst wirklich über einen String gehen. Dazu würde z.B. String.format dienen:
String.format("%.5f", val);
 
Zur Erklärung:
ich schreibe eine kleine Applikation für ein Plugin System.

Ich übergeben den double Wert und die Applikation stellt diese dar. Das kann ich nicht ändern oder formatieren.

Demnach stellt Java ab 4 Nachkommastellen die Ausgabe wissenschaftlich dar.
Bis 3 wird die Ausgabe als normale Zahl dargestellt.

Demnach muss ich mich wohl mit 3 Stellen Zufrieden geben 🙂
 
Wo ist das Problem? Was übergibst Du wo wie?

Wenn Du einen double übergibst, dann übergibst Du den eigentlichen Wert. Da gibt es keine Darstellung. Das sind dann einfach die 8 Bytes.
Wenn Du es aber in Textform übergibst, dann sind es ja Zeichen - dann machst Du die Übergabe nach der entsprechenden Umwandlung.

Das was Du hier an Ausgabe Problematik darstellst ist ein nicht existentes Problem!
 
Ich habe gerade etwas getestet:
Das was du da getestet hast, passt nicht zu dem, was du hier schreibst:
Ich übergeben den double Wert und die Applikation stellt diese dar.

In deinem Test stellst du (mittels println()) ja den double Wert (als String - oder Zeichen) auf der Konsole dar. Der eigentliche double Wert besteht aus 64 Bits, die interpretiert werden wollen. Du hast also getestet, wie println() einen double Wert ausgibt.
 
Zuletzt bearbeitet:

Zurück
Oben