Ganzzahlige Division mit Rest in JavaScript?javascript


Answers

Ich bin kein Experte für bitweise Operatoren, aber hier ist eine andere Möglichkeit, die ganze Zahl zu erhalten:

var num = ~~(a / b);

Dies funktioniert auch für negative Zahlen richtig, während Math.floor() in die falsche Richtung läuft.

Das scheint auch richtig zu sein:

var num = (a / b) >> 0;
Question

Wie bekomme ich in JavaScript:

  1. die ganze Häufigkeit, mit der eine gegebene ganze Zahl in eine andere geht?
  2. der Rest?



ES6 führt die neue Math.trunc Methode ein. Dies ermöglicht es, @ MarkElliots Antwort zu korrigieren , damit es auch für negative Zahlen funktioniert:

var div = Math.trunc(y/x);
var rem = y % x;

Beachten Sie, dass Math Methoden gegenüber bitweisen Operatoren den Vorteil haben, dass sie mit Zahlen über 2 31 arbeiten .




Sie können die Funktion parseInt , um ein abgeschnittenes Ergebnis zu erhalten.

parseInt(a/b)

Um einen Rest zu erhalten, benutze den Mod-Operator:

a%b

parseInt hat einige Probleme mit Strings, um die Verwendung von Radix-Parametern mit Basis 10 zu vermeiden.

parseInt("09", 10)

In einigen Fällen kann die String-Darstellung der Zahl eine wissenschaftliche Notation sein, in diesem Fall wird parseInt ein falsches Ergebnis liefern.

parseInt(100000000000000000000000000000000, 10) // 1e+32

Dieser Aufruf erzeugt 1 als Ergebnis.




Math.floor(operation) gibt den gerundeten Wert der Operation zurück.

Beispiel der 1. Frage:

var x = 5;
var y = 10.4;
var z = Math.floor(x + y);

console.log(z);

Konsole:

15

Beispiel der 2. Frage:

var x = 14;
var y = 5;
var z = Math.floor(x%y);

console.log(x);

Konsole:

4




Ich benutze normalerweise (a - a % b) / b . Es ist wahrscheinlich nicht das eleganteste, aber es funktioniert.




Alex Moore-Niemis Kommentar als Antwort:

Für Rubyisten hier von Google auf der Suche nach divmod können Sie es als solches implementieren:

function divmod(x, y) {
  var div = Math.trunc(x/y);
  var rem = x % y;
  return [div, rem];
}

Ergebnis:

// [2, 33]



Die Berechnung der Seitenanzahl kann in einem Schritt erfolgen: Math.ceil (x / y)