Laden...

Rundungsfrage bei Geschwindigkeitsberechnung

Erstellt von spoochie vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.144 Views
S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren
Rundungsfrage bei Geschwindigkeitsberechnung

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

1.002 Beiträge seit 2007
vor 15 Jahren

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

Gelöschter Account
vor 15 Jahren
S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren

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

49.485 Beiträge seit 2005
vor 15 Jahren

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

1.002 Beiträge seit 2007
vor 15 Jahren

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

S
spoochie Themenstarter:in
155 Beiträge seit 2007
vor 15 Jahren

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