ungewolltes Runden

Tobser

Mitglied
Hallo zusammen, ich habe ein Problem mit einer Berechnung in der mein Programm das Ergebnis abrundet und somit ein Fehler entsteht
Java:
       double Faktor []=new double[Modell.Elementanzahl];
       for(int i=0;i<Modell.Elementanzahl;i++){
           Faktor[i]=2 * Elem[i].ElementEModul * Elem[i].Elementflaechenmoment / (Elem[i].Elementlaenge*Elem[i].Elementlaenge*Elem[i].Elementlaenge);
       }
Modell.Elementanzahl ist vom Typ int mit dem Wert 5
ElementEModul ist vom Typ int mit dem Wert 210
Elementflaechenmoment ist vom Typ int mit dem Wert 80
Elementlaenge ist vom Typ int mit dem wert 10
Theoretisch sollte 33,6 herauskommen, das tatsächliche Ergebnis ist 33,0
Hat jemand eine Idee, wie ich das lösen kann?
 
Theor. müsste es reichen den kompletten Ausdruck unter dem Strichbruch zu einem double zu casten.

Java:
System.out.println( (5*2) / (double) (3*2) );

Gruß
Robert
 
Moin,

Du rechnest ja nur mit Integerwerten!
Also 2 * 210 * 80 = 33600 und 33600/1000 = 33 !!

Du musst den Divisor vorher auf "double" casten
Also (2 * 210 * 80) / (double) (1000) = 33,6 !!

Gruß Klaus

EDIT: zu langsam ...
 
ok, da hast Du zwar Recht, ist aber IMHO (nicht nur) für Anfänger deutlich fehleranfälliger, da es schnell mal übersehen werden kann!
Einen 'echten' Cast finde ich übersichtlicher !

Gruß Klaus
 

Neue Themen


Zurück
Oben