• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Javascript Matherechnung mit einer Servertemplatevariable

x-sama

New member
Hallo,

mithilfe dieses codes erhalte ich die Filegröße einer Datei:
Code:
></font> (<TMPL_VAR fsize>)</font>

Ich will dass die filesize durch z.b xx kb die Sekunde geteilt wird, damit ich weiß wie lange das Herunterladen dauern wird.


Wie wäre das zu realisieren?

Danke.:redface:



Grüße
 
Zuletzt bearbeitet von einem Moderator:
AW: Javascript Matherechnung

Da musst du mal im dem Serverscript schauen, das diese Templatevariable ersetzt. Oder du nimmst die Variable in JS auf und schreibst das gewünschte Ergebnis in das HTML.
Z.B. so:
HTML:
<div id="filesize"></div>
<script>
  document.getElementById('filesize').innerHTML = parseInt('<TMPL_VAR fsize>',10)/1024;
</script>
Das ist ein Beispiel, wie man den Wert - ich setze Byte voraus - als KB Wert anzeigen kann. Da kann natürlich jede beliebige Berechnung rein.
 
Vielen Dank mikdoe :D

Ich habe den Code etwas verändert und jetzt funktioniert die Rechnung prima.
Das Problem ist nur, dass das Ergebnis sehr lang wird.
Ich habe in google gesucht und bin auf math.round gestoßen. Habe probiert es überall einzusetzen,
aber der JS code funktioniert dann nicht...

Könntest du bitte zeigen wie der Code aussieht, wenn man das Ergebnis noch aufrunden will?
 
Zuletzt bearbeitet:
Zeigst du bitte mal, was du denn probiert hast?

Mit der Fehlerbeschreibung
aber der JS code funktioniert dann nicht...
kann man so gut wie nichts anfangen. Steht etwas in der Fehlerkonsole?

Wenn du auf eine gewisse Anzahl von Stellen runden willst, kannst du das folgendermaßen:
Code:
Object.defineProperty(
  Number.prototype,
  "rundenAuf", {
     enumerable: false,
     value: function(stellen) {
        return (this.toFixed(stellen))/1;
     }
  }
);

//Beispiel:
var zahl = 1.23456789;
alert(zahl.rundenAuf(2)); //1.23
 
Zuletzt bearbeitet:
Ja, Julian hat es schon sehr gut getroffen, toFixed() war nach meiner Erinnerung auch der beste Konsens, wenngleich auch nicht die einzige Lösung. Das Thema Runden ist kein ganz einfaches. Wenn man oben rechts in der Suche mal runden eingibt sollte man sich die ersten drei Treffer komlett reinziehen. Das verschafft ein Gefühl dafür, wie man einem Computer annähernd das beibringt, was für uns Menschen garkein Problem ist, nämlich an der richtigen Stelle das richtige Ergebnis zu verwenden.
Da ich sowas nie auf dem Client mache kann ich dafür keine eigene JS Lösung anbieten.
 
Guten Morgen,

so sieht der code aus:

Code:
<div id="filesize"></div>
<script>
 document.getElementById('filesize').innerHTML = parseInt ('<TMPL_VAR fsize>') /80; </script>

die filesize wird durch 80(dl geschwindigkeit) geteilt.

Die Ergebnisse sehen so aus: 10.9625... mir würde reichen wenn nur 10 steht...


Ich habe verschiedene math.round codes an verschiedenen Stellen leider erfolglos eingesetzt.


@Julian

Deine Methode müsste klappen, nur weiß ich nicht wie ich es in meinem vorhandenen code integrieren kann...:confused:
 
Das Thema Runden ist kein ganz einfaches.
Ja, zu den Schlagworten "floating point precision" oder ähnlichem gibt es Tonnen von Infotexten, Diskussionen und Erklärungen...
Da stößt man dann auf teilweise sehr konplexe und auf den ersten Blick verwirrende Sachen wie die 255 verschiedenen Varianten von 0...
What Every Computer Scientist Should Know About Floating-Point Arithmetic
Precision of Floating Point - Stack Overflow
Mal ein Auszug aus dem oberen Artikel:
When a multiplication or division involves a signed zero, the usual sign rules apply in computing the sign of the answer. Thus 3·(+0) = +0, and +0/-3 = -0. If zero did not have a sign, then the relation 1/(1/x) = x would fail to hold when x = ±. The reason is that 1/- and 1/+ both result in 0, and 1/0 results in +, the sign information having been lost.
 
nur weiß ich nicht wie ich es in meinem vorhandenen code integrieren kann...:confused:
Am besten am Anfang einfach schrittweise:
HTML:
<div id="filesize"></div>
<script>
 var erg = parseInt('<TMPL_VAR fsize>')/80;
 document.getElementById('filesize').innerHTML = erg.toFixed(0);
</script>

P.S.: Lass das mit den Leerzeichen zwischen Kommando und Klammer am besten sein. Wenn man sich das zu sehr angewöhnt sieht der Code irgendwann richtig grottig aus und die Zeilen werden viel zu lang.

Was Julian dir gezeigt hat ist eine Prototype Lösung. Die würde man z.B. dann verwenden, wenn man an mehreren Stellen runden muss, um redundanten Code zu vermeiden.
 
am
Was Julian dir gezeigt hat ist eine Prototype Lösung. Die würde man z.B. dann verwenden, wenn man an mehreren Stellen runden muss, um redundanten Code zu vermeiden.
Und wichtig ist auch, dass dabei die Zahl ein float bleibt. Eine mit .toFixed() gerundete Zahl wird nämlich zu einem String konvertiert.

@x-sama: gern geschehen!
PS: wieso lässt du das Ganze nicht serverseitig berechnen und direkt ausgeben? Was ist, wenn jemand JS deaktiviert hat?
 
Du entwickelst dich zu einem richtigen JS Ass, Julian! Wäre ich doch auch noch so jung und lernfähig........ :(
 
Zurück
Oben