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

Vom Beitragsersteller als hilfreich ausgezeichnet

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.


keinname123123 
Beitragsersteller
 17.06.2017, 21:01

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

0

var zahl = 123;

var teiler = 5;

var rest = zahl % teiler;

var divisionsErgebnis = (zahl - rest) / teiler;

=================

So würde es auch ohne math.floor gehen.


keinname123123 
Beitragsersteller
 15.06.2017, 13:35

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

g_Zahl = 0;

k_Zahl = 0;

if (z2 > n2) {
g_Zahl = z2;
k_Zahl = n2;
} else {
g_Zahl = n2;
k_Zahl = z2;
}
alert(g_Zahl);
0
ceevee  15.06.2017, 14:02
@keinname123123

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.

0
keinname123123 
Beitragsersteller
 18.06.2017, 13:45
@ceevee

die werte nehme ich aus der document.getElementById("").value Funktion

0
Erzesel  18.06.2017, 17:05
@keinname123123


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.

0
keinname123123 
Beitragsersteller
 15.06.2017, 12:42

ok, so könnte mans auch machen, galube ich probiers so. Aber rein Interesse halber, gibt es ne Funktion die immer abrundet?

0

Mal Pseudocode:

f a b = (a div b) + "Rest" + (a mod b)

:-)

Woher ich das weiß:Studium / Ausbildung – Studiere Informatik und programmiere aus Leidenschaft

keinname123123 
Beitragsersteller
 17.06.2017, 19:04

f a b ohne irgendwas zwischendrinne geht das überhaupt in JavaScript?Hab ich nämlich so noch nie gesehen

0
KnorxyThieus  18.06.2017, 18:46
@keinname123123

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); }
0

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


keinname123123 
Beitragsersteller
 15.06.2017, 12:40

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??

0
hm8647  15.06.2017, 12:48
@keinname123123

Warum benutzt du jetzt auf einmal Math.round()?
Du hast doch eben sogar gewusst, dass Math.floor() abrundet..

2
keinname123123 
Beitragsersteller
 15.06.2017, 13:38
@hm8647

weil ich die antwort dass es stimmt erst später bekommen habe xD

0