Morgen,
ich möchte gerne den Javascript Taschenrechner von SelfHTML modifizieren. Nun werden aber durch die funcktion Check(Eingabe) nur Zahlen und Rechenoperatoren erlaubt. Nun zu meiner Frage:
Wenn ich auch Buchstaben erlauben würde, wäre ja die Gefahr gegeben, dass der User seine eigenen Scripte einbaut. Aber wäre das so schlimm? Ich meine, es wird ja nichts gespeichert, also bestünde keine Gefahr für mich bzw. für den Script. Könnte mir ja eigenlich egal sein, wenn sich der User ein Ei legt richtig? Oder hab ich da etwas gravierendes übersehen?
wenn du die eingaben nicht online weiterverarbeitest(und bei anderen clients anzeigst) sehen ich da auch keine gefahr.
was evtl. probleme machen könnte, ist das der user mit einer fehlerhaften eingabe einen javascript fehler erzeugt. dieser wird in den älteren IE´s angezeigt und könnte user verwirren.
Das wird wohl nicht passieren
Danke für die Bestätigung
Mfg
Mgier
da JS (in diesem fall) auf dem client läuft kann dir das sowieso egal sein denn der user kann da machen was er will
und mit JS würde ich keine Taschenrechner machen, da Js nicht richtig rechnen kann xD (wie ich das hasse)
Wie meinst du das? Float-Probleme? Hast du ein Beispiel ?
Das würde mich jetzt auch interessieren…
Das ist richtig, JS rechnet mit floats nicht korrekt. Dies liegt allerdings am Dualsystem, nicht an JS.
Hier eine Erklärung und Beispiele:
http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_rechnen
Dieses Problem haben wohl alle Sprachen, die nicht über geeignete (kaufmännische) Datentypen verfügen. Nun werden ja Ergebnisse von Berechnungen im Normalfall in einen bestimmten Format ausgegeben. Die Beispiele und Erläuterungen in den von yox zitierten link sind gut, die dortigen Vorschläge für Rundungen wirken auf mich jedoch akademisch und antiquiert (Der Artikel ist ja auch schon einige Jahre alt).
Für Ergebisse mit einer festen Anzahl Nachkommastellen benutze ich immer toFixed().
Für den allgemeinen Fall hätte ich da eine Idee für eine function zum universellen Runden vor der Ausgabe:
function round(zahl){
return zahl.toPrecision(15)-0;
}
//Beispiel
var z= 0.6 + 0.3; //alert(z) liefert 0.8999999999999999
var zr=round(z); //alert(zr) liefert 0.9
Die function round() sollte nur einmal vor der Ausgabe genutzt werden, nicht jedoch für Zwischenergebnisse. Getestet mit den aktuellen Versionen des IE, FF, Chrom, Opera.
Die function kann auch in den von Mgier zitierten Taschenrechnerscript ohne Probleme in die function Ergebnis() wie folgt eingebaut werden:
document.Rechner.Display.value = round(x);
Pit