Ich brauche ein Javascript Programm, dass mir sagt wie oft die zahl in eine andere passt und wieviel Rest bleibt. Bsp, 12 durch 5 = 2 Rest 2 hat jemand ne Idee?
4 Antworten
Du hast im Prinzip zwei Ergebnisse, die du erreichen möchtest:
1. Wie oft passt y in x
2. Was ist der Rest
zu 1.
x = 10
y = 6
rest = 10 % 6 = 4
zu 2.
wieOft = 10 / 6 = 1.666 = Math.round(1.666) = 2
Für genauere Nachkommastellen würde ich es wie folgt machen:
Math.round(1.666 * 100) / 100 = 1.67
Etwas unelegant, aber funktioniert.
danke für den Code, aber bist du dir sicher das die 6 2mal in die 10 passt? :D
du müsstest abrunden dann passts xD
var zahl = 123;
var teiler = 5;
var rest = zahl % teiler;
var divisionsErgebnis = (zahl - rest) / teiler;
=================
So würde es auch ohne math.floor gehen.
Und auch dafür gibt es zwei eigene Methoden in der Math-Klasse
g_Zahl = Math.max(n2, z2);
k_Zahl = Math.min(n2, z2);
Dein Code ist zwar reichlich umständlich, sieht aber richtig aus.
Welche Datentypen haben 1.Zahl und 2.Zahl bzw. wo bekommst du die her? ("1" und "2" sind übrigens sehr unschöne Bezeichner. Variablen sollten immer mit einem Buchstaben beginnen). Ich würde vermuten, dass das noch eine weitere Fehlerursache ist.
die werte nehme ich aus der document.getElementById("").value Funktion
getElementById("").value liest Text aus HTML, ergo sind deine Zahlen Strings.
der String 9 ist größer als 28 das ist richtig so: Bär ist auch größer als Alfred.
Da Javascript keine Typisierten variablen kennt, ist bei:
x = document.getElementById(id)
x eine Stringvariable auch wenn der Text eine Zahl ist!
mit einem Typecast :
x =parseFloat(
document.getElementById(id) )
...
wird x Zu einer Zahl-variable
...das ist sauberer Code... und vermeidet Nebeneffekte, denn auch wenn Math.max() den Type ignoriert, so gibt irgendwo bei weiteren Berechnungen Probleme...
Wenn man dann zwei dieser Variablen vergleicht, ist 9 kleiner als 28.
ok, so könnte mans auch machen, galube ich probiers so. Aber rein Interesse halber, gibt es ne Funktion die immer abrundet?
Ja, die Funktion heißt Math.floor(). ;)
Das Stichwort hast du in der anderen Antwort schon bekommen, du solltest üben, dann die Doku zu lesen, also in dem Fall z.B.
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
Mal Pseudocode:
f a b = (a div b) + "Rest" + (a mod b)
:-)
f a b ohne irgendwas zwischendrinne geht das überhaupt in JavaScript?Hab ich nämlich so noch nie gesehen
War wie gesagt nur Pseudocode, sorry.
f a b anstatt f(a, b) ist eigentlich eher ein Haskell-Dialekt. Mach daraus halt:
string f(int a, int b) { return (a div b) + "Rest" + (a mod b); }
Durch teilen und abrunden weißt du, wie oft die Zahl reinpasst.
Für den Rest gibt es Modulo: https://wiki.selfhtml.org/wiki/JavaScript/Operatoren/Rechenoperatoren#Der_Modulo-Operator
ok, habs jetzt mal probiert mit Math.round() aber wenn ich jetzt 15 und 2 hab, dann kommt 8 raus, weil 15 durch 2 7.5 ist und ab 0.5 rundet man ja auf , gibt es irgend ne funktion die immer abrundet oder die halt nur diezahlen vor dem komma liest??
Warum benutzt du jetzt auf einmal Math.round()?
Du hast doch eben sogar gewusst, dass Math.floor() abrundet..
weil ich die antwort dass es stimmt erst später bekommen habe xD
noch eine Frage an dich, da du dich mit Javascript anscheinend gut auskennst:
Folgender Code sollte,wenn man zwei zahlen eingibt, erstmal die größere ausgeben.Da liegt schon das Problem:
wenn ich jetzt zB. 28 und 10 habe , gibt er mir 28 aus,was ja auch richtig ist. Aber sobal die eigentlich kleinere Zahl unter 10, zB. 9 ist, wird diese als größer erkannt.Warum??
n2 = 2.Zahl
z2 = 1.Zahl