Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo zusammen =)
Ich bin noch ziemlich grün hinter den ohren in sachen java..
studiere derzeit im 1. Semester Wirtschaftsinformatik...
so.. nun
Hab mich heut mal wieder entschlossen ein paar Übungsaufgaben die unser Prof. immer voller freude austeilt zu machen =)
Soweit, alles im Lot..
Nun Folgende Aufgabe:
Schreiben Sie eine Funktion, die die dritte dezimale Nachkommastelle einer Gleitkommazahl ermittelt.
Hier meine Fortschritte:
Java:
public class Aufgabe20 {
public static void main (String[]args){
double x =(double) 23/5;
int b = drittestelle (x);
System.out.println(b);
}
public static int drittestelle (double x){
int b= (int) (x * 100);
int c = (int) (b*10);
double d = (int) (x*1000);
int e = (int) (d%c);
return (int) e;
}
}
Die Ergebnisse für alle Zahlen <0 stimmen auch, allerdings tritt für manche größer 0 ein Fehler auf.
z.B. eben bei 23/5.. hier passiert folgendes:
Die Zeile :
Java:
int b= (int) (x * 100);
scheint n bock zu bauen
ich weiß nicht warum aber statt 460 kommt hier 459,.... raus.. scheint mir n typischer double fehler zu sein..
also fassy..
scheint mir ne voll klasse lösung zu sein, aber weder ist mir so ne funktion bisher bekannt gewesen, noch glaub ich dass dies der sinn der übung war D
und nrg.. also ich habs jetz ma so umgeschrieben
Java:
public class Aufgabe20 {
public static void main (String[]args){
double x =(double) 23/5;
int b = drittestelle (x);
System.out.println(b);
}
public static int drittestelle (double x){
double d = (int) (x*1000);
d =d -( ((int)(x*100))*10);
System.out.println(d);
return (int) d;
}
}
und es is das gleiche problem wie davor...
er gibt mir 10 statt 0 zurück..
also wird das x*100*10 einfach scheisse gerundet..
die dümmste lösung wär einfach ((x*100)+1).. aber das erscheint jetzt...
sorry?
ich habs schon gecheckt was du gepostet hast.
Im endeffekt ist es aber genau das gleiche was ich schon im ersten Post drin hatte...
und wenn du meinen beitrag gelesen hättest, hättest du gemerkt das ich nicht probleme mit der umsetzunge habe
sondern mit der funktionalität...
sorry..
sei es auch wies will.. im großen und ganzen funktionierts ja..
wollt eig. nur wissen ob es ne möglichkeit gibt den double fehler zu korrigieren bzw ne möglichkeit ihn zu vermeiden
edit.:
Hmm..also verwenden darf ich im prizip alles..
also die version gefällt mir schonma gar nich schlecht.. wusst nich das es sowas gibt. bzw wie es zu verwenden ist. ...
ja hast schon recht. siehe edit2 oben. anders kriegst du das aber imho auch nicht auf die reihe. wenn du genaue erklärungen willst, benutz mach die SuFu nach sachen wie "Java rechnet ungenau" oder ähnlichem
public class Aufgabe20 {
public static void main (String[]args){
double x =(double) 23/5;
int b = drittestelle (x);
System.out.println(b);
}
public static int drittestelle (double x){
double d = (int) (x*1000);
d =d - ((int)(d/10)*10);
return (int) d;
}
}