help@school: Runden

das ist der quelltext in c++

float zRunden(float x) {
          int r;
x = x*10;  //nach 2 Stellen
 r = x;  //abschneiden,
 x = r;   //zurück nach float
 return (x/10);
}

Ich brauche aber das unbedingt in Javascript mit "parsefloat" aber ich bekomme das nicht hin. Kann mir bitte bitte jemand helfen??

thx MFG

  1. das ist der quelltext in c++

    float zRunden(float x) {
              int r;
    x = x*10;  //nach 2 Stellen
     r = x;  //abschneiden,
     x = r;   //zurück nach float
     return (x/10);
    }

    Ich brauche aber das unbedingt den Quelltext für Javascript mit "parsefloat" usw aber ich bekomme das nicht hin. Kann mir bitte bitte jemand helfen??

    thx MFG

    1. THX

      Falls jemand noch ne bessere idee hat schaut mal in thread

      kleines c++ script zu javascript

      1. ich bräcuhte halt die gesamte Function am besten, weil wir das hier voll nicht gebacken bekommen.

  2. das ist der quelltext in c++

    float zRunden(float x) {
              int r;
    x = x*10;  //nach 2 Stellen
    r = x;  //abschneiden,
    x = r;   //zurück nach float
    return (x/10);
    }

    Du willst wvielleicht noch aufrunden?
    Das ist normalerweise ein Einzeiler.

    y = int( x * 10 + .5) / 10

    mit JS funktioniert das genauso.

    y = parseInt( x * 19 + 0.5) / 10;

    Struppi.

    1. y = parseInt( x * 19 + 0.5) / 10;

      Natürlich:
      y = parseInt( x * 10 + 0.5) / 10;

      Struppi.

      1. Moin!

        Natürlich:
        y = parseInt( x * 10 + 0.5) / 10;

        Problem: Beim Teilen durch 10 erhält man im Binärsystem meist wieder Rundungsfehler, die das schönste Runden versauen können. (Das gilt auch für die C++-Version.)

        Deshalb als Taktik: Zahl in String umwandeln, das Komma suchen und dahinter noch x Zeichen dranlassen, den Rest abschneiden. Ggf. mit Nullen auffüllen. Für Ganzzahlen nicht vergessen, auch das Komma hinzuzufügen.

        - Sven Rautenberg

        --
        ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
        1. Moin!

          Natürlich:
          y = parseInt( x * 10 + 0.5) / 10;

          Problem: Beim Teilen durch 10 erhält man im Binärsystem meist wieder Rundungsfehler, die das schönste Runden versauen können. (Das gilt auch für die C++-Version.)

          Wie gross (bzw. häufig) sind die Rundungsfehler?
          letzlich dürfte die wahrscheinlichkeit das das stört gering sein, es sei denn...

          Deshalb als Taktik: Zahl in String umwandeln, das Komma suchen und dahinter noch x Zeichen dranlassen, den Rest abschneiden. Ggf. mit Nullen auffüllen. Für Ganzzahlen nicht vergessen, auch das Komma hinzuzufügen.

          .. man rechnet kaufmännisch, d.h. mit echten Geld, da will niemand sich betrogen fühlen. In all den anderen Fällen sollte die von mir beschriebene Methode reichen. Oder rechnest du alle Rechenoperationen mit der beschriebenen Methode? (was ja unsinnig wäre, da nach dem Maßstab jede float Zahl schon ungenau ist)

          Struppi.

  3. Hallo MFG,

    Ich brauche aber das unbedingt in Javascript mit "parsefloat" aber ich
    bekomme das nicht hin. Kann mir bitte bitte jemand helfen??

    Das ist aber nicht der Zweck von Schule, oder?

    Was Dein C++-Script da macht, ist aber kein Runden, sondern ein Abhacken
    der Nachkommastellen. Dies geschieht durch die Typumwandlung von float
    nach int. In Javascript würde ich an dieser Stelle parseInt() verwenden.

    Und den Rest der Javascriptsyntax kann man wirklich in SELFHTML nachschlagen.

    Tim

  4. x = x*10;  //nach 2 Stellen

    btw. So "rundet" das Script aber nur auf eine Nachkommastelle:

    x=10.1234
    x=x*10 -> x=101.234
    r=x    -> r=101
    x=r    -> x=101.0
    x/10   -> 10.1