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

Bruch aus Input-Feld in Dezimalzahl umwandeln

Gwunderi

New member
Hallo zusammen,

Will eine in einem Input-Feld eingegebene Zahl (=Steigung) in einen Winkel (Gradmass)umwandeln; es funktioniert auch wenn ich eine ganze Zahl oder einen Dezimalbruch eingebe (z.B. 1, -2, 0.333, ...).
Wenn ich aber 1/3 anstatt 0.3333 eingebe, funktioniert es nicht. Habe alles mögliche versucht, z.B. mit parseFloat - geht einfach nicht!

So geht es, wenn ich Math.atan(1/3) eingebe:
HTML:
<p onclick="this.innerHTML = 180 / (Math.PI/Math.atan(1/3))">Grad</p>
Das Ergebnis ist richtig 18.435...

Folgender Code geht aber nicht, es wird dann NaN ausgegeben (keine Zahl):

HTML:
Steigung: <input id="i1" onKeyDown="hol(event)">

<p id="p10">Grad: </p>

<script>
function hol(event)
{if (event.keyCode == 13)
	{var steig = document.getElementById("i1").value;
	grad = 180 / (Math.PI/Math.atan(steig));
	var ausg = Math.round(1000*grad) / 1000;
	document.getElementById("p10").innerHTML = "Grad: " + ausg;}
}
</script>

Vielen Dank wenn Ihr mit da einen Ausweg wisst ...
Gwunderi
 
Hast du mal var steig = Number(document.getElementById("i1").value) probiert?
Ansonsten musst du mal nach jeder Zeile das Zwischenergebnis raus schreiben und schauen, ab wann es nicht mehr stimmt.
 
- - - Aktualisiert - - -

Hallo Mikdoe

Danke für Deinen Vorschlag, geht aber leider auch nicht - habe es auch mit "number" (Anfangsbuchstabe klein) und ohne abschliessende Klammer versucht - nichts.

Das mit den Zwischenergebnissen hatte ich auch schon versucht:
Gebe ich ausserhalb der Funktion alert(1/3) ein, wird 0.33333… herausgegeben.
Lasse ich mir den herausgelesenen Wert anzeigen mit alert(steig), zeigt es 1/3 an.

Habe bei meinen Versuchen auch irgendwo gelesen, dass Eingaben in einem Input-Feld immer als String behandelt werden, darum hatte ich es auch mit parseFloat() versucht … auch nichts!

Nicht so schlimm hier, denn ich werde eh fast nur ¼, ¾, ½, 1/3 und 2/3 brauchen, und die habe ich ja schnell im Kopf in 0.25 etc. umgewandelt …

Hatte wirklich lange gesucht und gepröbelt, vielleicht gibt's da wirklich keine (nicht allzu aufwendige) Möglichkeit?

Nochmals herzlichen Dank.
Gwunderi
 
Mein Post galt nicht für Bruchschreibweise sondern für die NaN-Frage. Ich dachte, dass du schon erkannt hattest, dass man eine solche Nichtzahl-Schreibweise erst speziell in eine Zahl parsen muss, bevor man damit rechnen kann.

Gib in Google mal "js parse math fraction" ein. Da ist sicher was passendes dabei.

Eine Lösung dafür zu finden wäre im Zweifel rechentechnisch genauer, als ein mathematisches Drittel in nur 5 Nachkommastellen zu kürzen. Kommt auf Aufwand/Nutzen an.
 
Zurück
Oben