Double rundet falsch
Ich habe ein problem mit meinem code in eclipse Indigo (windowbuilder)
Bei folgendem code:
double Test = 55/7; txt_Ausgabe.setText( Test );
mit meinem Taschenrechner kommt 7,85714 heraus
mein programm gibt aber einfach immer 7 aus... auch bei anderen ergebnissen mit komma wird einfach immer abgerundet.
hoffe man kann mir hier helfen.
mfg Rubix
5 Antworten
Versuch mal so:
double Test = 55/7.0; txt_Ausgabe.setText( Test );
kannst du mir biiittee den code dazu aufschreiben? Ich habe leider keine Ahnung was casten eig. ist^^
Danke
PerfectMuffin hat schon alles wichtige zu dem Thema geschrieben. Dem ist eigentlich nichts mehr hinzuzufügen.
Anfängerhilfe zum Thema Casten und Kommas:
Wenn man zwei Ganzzahltypen (short,int,long) teilt, erhält man immer nur Ganzzahlen, 3:2 ist also 1.
Um Kommazahlen zu verwenden muss einer der Operanden float oder double sein.
Deklaration von float: 123F das F setzt den Typ zu float.
Deklaration von double 123. oder 12.3 und so weiter, einfach einen Kommapunkt verwenden.
Man kann beliebig mit Klammern zwischen primitiven Datentypen casten
double d=(double)123;//123.0
d+=.5//123.5
int i=(int)d;//123
Du hast das Feld als Integer definiert
indem alles Ganzzahlen verwendet sind.
Kein Kommentar dazu.
Du verwendest "definieren" im falschen Kontext, Literale werden nicht definiert, sie sind Konstanten.
Okay, du hast recht. Es ist halt eine Frage der Terminologie. Inhaltlich meinen wir dasselbe.
Wenn du einen double nach int castest (und das ist es, was du hier tust), wird immer abgerundet. Versuchs mal mit txt_Ausgabe.setText(Math.round(Test))
Oder ohne runden: txt_Ausgabe.setText(Test)+""
wo caste ich hier ein double nach int? wie kann ich das verhindern?
Hab mir den Code noch mal angeschaut, ich lag falsch. Ich hatte ausgehend von dem Fehler vermutet, dass die Textausgabe intern mit einem int arbeiten würde. Macht aber eigenrlich keinen Sinn.
Nein, der eigentliche Fehler liegt darin, dass bei der Division zweier Integer auch nur ein Integer herauskommt, im Zweifelsfalls also abgerundet wird, bevor das Ergebnis der double-Variable zugeordnet wird. Versuch mal Test = 55/7d.
Beim Dividieren in Java muss damit eine Kommazahl(float/double) rauskommt mindestens eine der Ausgangszahlen ebenfalls eine Kommazahl sein.
Du hast recht so funktioniert es.
Aber angenommen ich bekomme immer eine andere int zahl übergeben, und von dieser möchte ich 70% haben.
Derzeit mache ich es so: int übergeben = "das was man eben bekommt";
double test = (übergeben*70/100); txt_Ausgabe.setText( Test ); auch hier rundet er bei der Ausgabe immer...