Nicht als Double behandelt

Syrill

Mitglied
Hallo! :)

Für ein Programm brauche ich eine Rechnung und habe diese wie folgt geschrieben:
Code:
1 / 5 * Math.exp(Math.pow(x, 2) / 2)
Das Ergebnis war jedoch jedes mal 0. (Als "Standart-Testwert" beim Rechnen hatte ich 5,9 verwendet (bzw. 5.9))
Die Lösung war scheinbar, dass Java das 1 / 5 abrundet, also nicht als 0,2 verwertet.
Dieser Code funktionierte dann:
Code:
(double) 1 / 5 * Math.exp(Math.pow(x, 2) / 2)

Meine Frage nun:
Warum behandelt Java das 1 / 5 nicht auch als double?
(der Wert der Rechnung wurde einer Double Variablen zugewiesen)


Vielen Dank schonmal,
Ulrich

PS: Sorry für den konfusen Titel... :)
 
Das ist völlig normal. Wenn du eine Rechnung mit zwei Integern machst, kommt auch ein Integer raus (Ganzzahldivision). Das ist aber nicht nur in Java so.
Anstelle das Casts kannst du es auch so machen:
Java:
Math.exp(Math.pow(x, 2) / 2) / 5
//oder
1.0 / 5.0 * Math.exp(Math.pow(x, 2) / 2)
//oder
1d / 5d * Math.exp(Math.pow(x, 2) / 2)
 
Ich bin mir nicht sicher, doch double zahlen haben ja eine nachkommerstelle, und integer haben keine. Daher denke ich, dass du es vielleicht so schreiben solltest:

1.0 / 5.0
 
Danke euch! :)
Vor lauter Mathematik hab ich die Grundlagen von Java völlig vergessen. Da vor der Formel ein double x = kam, habe ich nicht mehr sehr auf die Typen in der Formel geachtet... danke.
 
Zurück