2012-09-21 3 views
11

Auf meinem Rechner, wenn ich 18/7 mache, bekomme ich 2,5714285714285714285714285714286. Von meiner super begrenzten Mathe-Fähigkeiten 2 ist der Quotient und .5714285714285714285714285714286 ist der Rest.Wie bekomme ich den Quotienten als int und Rest als Fließkommazahl in JavaScript

Wie kann ich dies in JavaScript modellieren?

Danke!

+2

Wäre der Rest nicht '4'? '18% 7 === 4'. – elclanrs

+0

Vielleicht ist der Rest nicht der korrekte Name. Ich möchte dieses Fließkomma-Bit. –

Antwort

21
var floatingPointPart = (18/7) % 1; 
var integerPart = Math.floor(18/7); 
+1

Warum nicht 'Math.trunc'? Dann funktioniert es auch mit negativen Zahlen. – letmaik

6
var rawQuotient = 18/7; 
var remainder = rawQuotient % 1; 
var quotient = rawQuotient - remainder; 

In den meisten Mathematik gibt es keine wirkliche Notwendigkeit zur Unterscheidung zwischen dem Bruchteil und dem gesamten Abschnitt, zumal das Ganze als eine Fraktion (18/7ths) als reellen ausgedrückt werden Anzahl oder als eine Mischung aus ganzen Zahlen und Brüchen (2 und 4/7).

Wenn Sie in Programmierung oder Technik oder ein anderes Derivat kommen, haben Sie bestimmte Verwendungen für die Trennung; aber der Quotient ist wirklich die ganze Sache, Integer und Bruch, wie auch immer Sie sich dafür entscheiden.

+0

Diese (verwendet einfache arithmetische) Antwort ist besser als die akzeptierte Antwort, die von der Math-Bibliothek abhängt. – Curious

+0

Hier kann Quotient durch Restfehler Rundungsfehler haben. – Ethan

0

Tatsächlich ist 2 der Quotient und 4/18 ist der Rest.

Math.divideby= function(d, dby){ 
    var q= Math.floor(d/dby), r= d-(q*dby); 
    return r== 0? q:q+' and '+r+'/'+d; 
} 

Math.divideby (18,7)

/* Rückgabewert: (String) */

2 und 4/18

2

2 ist der Quotient (oder ein ganzzahliger Teil des Ergebnisses), 4 ist der Rest und 4/7 ist der Fließkommaanteil des Ergebnisses, das das OP anfordert.

IntegerPart und FloatingPointPart sind die angeforderten Werte.

1

Wir können einfache Mathematik verwenden, um die Antwort nur mit / & % Betreiber zu erhalten.

Betrachten Sie 'num1' als ersten Wert & 'num2' als zweiten Wert. Dann:

var Quotient = (num1 - (num1 % num2))/num2; 

var FloatingPoint = (num1 % num2)/num2; 
4

Math.floor hat das Problem der Rundung des Ergebnisses auf falsche Richtung im Fall einer negativen Zahl wäre es besser, bitweise Operation zu verwenden interger Quotienten zu erhalten.

var quot = ~~(num/num1) 

Hoffentlich funktioniert das für Sie!

Verwandte Themen