Hallo Leute.
Ich wollte mir ein Programm schreiben, was mir die durchschnittsgeschwindigkeit ausrechnet.
Ich habe im Internet ein script gefunde, das genau dies erledigt. Ich bekomme bei meinem Programm aber immer andere Werte raus. Meine Frage ist jetzt, welche Berechnung ist richtiger bzw genauer?
Als Werte habe ich 8,1 km genommen und 12 min 32 sekunden
I-net Code:
Ergebnis: 38,8 km/h
a=document.formular.a.value; /* a Distanz zuweisen */
b=document.formular.b.value; /* b Stunde zuweisen*/
c=document.formular.c.value; /* c Minute zuweisen */
d=document.formular.d.value; /* d Sekunde zuweisen */
bm=b*60 /* Stunde in Minuten */
cm=c*1 /* Minuten in Minuten */
dm=d/60 /* Secunden in Minuten */
allmin=(bm+cm+dm) /* Gesamtzeit in Minuten */
kmh1=(a)/(allmin/60/10); /* speed calculation */
kmh = (Math.round(kmh1)/10) /* speed round-up */
und warum wird dort nochmal durch 10 geteilt??
Mein Code:
Ergebnis : 38,6 km/h
double dhour = 0;
double dmin = 0;
double dsec = 0;
double ddist = 0;
double dgeshour = 0;
dhour = Convert.ToDouble(textBox2.Text);
dmin = Convert.ToDouble(textBox3.Text)/60;
dsec = Convert.ToDouble(textBox4.Text)/60/60;
dgeshour = dhour + dmin + dsec;
dgeshour= Math.Round(dgeshour, 2);
ddist = Convert.ToDouble(textBox1.Text);
kmh = ddist / dgeshour;
kmh = Math.Round(kmh, 1);
MfG spooch
Hallo spoochie,
Indem im Nenner der Rechnung in Zeile 11 durch 10 geteilt wird, wird der Wert um den Faktor 10 größer. Das wird gemacht, damit beim anschließenden Runden per Math.Round
ein größerer Wert herauskommt, der nochmals durch 10 geteilt wird, um das Ergebnis auf eine Stelle nach dem Komma zu runden.
Edit: Der Prozess ist so gestrickt, da es in JavaScript nicht so eine bequeme Rundungsmöglichkeit der Funktion Math.Round
gibt.
Edit: Vielleicht interessiert dich die Klasse TimeSpan
, mit der du bequemer solche Umrechnungen vornehmen kannst.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
außerdem musst dudas noch beachten: [FAQ] Double und Float: Fehler beim Vergleich und Rundungsfehler
Hallo. Also mit der TimeSpan Klasse bekomme ich genau das selbe raus. Was ist denn nun richtiger? Das von mir oder dem Javascript?
Und wie kann ich denn richtig runden?
MfG spoochie
Hallo spoochie,
Was ist denn nun richtiger?
rechne doch mal (z.B. mit Paper und Bleistift nach), was eigentlich rauskommen müsste. Wir würden ja nichts anders tun.
herbivore
Hallo spoochie,
ich verstehe auch nicht, weshalb du schon während deiner Rechnung rundest.
Wenn du das tust, kann das Ergebnis natürlich ungenau werden - vor allem dann, wenn du durch 3600 teilst und nur 2 Nachkommastellen zulässt.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Ja m0rius und genau das mache ich jetzt auch cniht mehr. War irgendwie.. naja doof gedacht. Jetzt runde ich erst am Ende auf 1 Stelle. So klappts auch mit dem Runden.
Vielen Dank nochmal an alle.
MfG spooch