2012-09-21 7 views
11

Sulla mia calcolatrice quando faccio 18/7 ottengo 2.5714285714285714285714285714286. Dalle mie competenze matematiche super limitate 2 è il quoziente e .5714285714285714285714285714286 è il resto.Come faccio a ottenere il quoziente int e resto come un virgola mobile in JavaScript

Come posso modellare questo in JavaScript?

Grazie!

+2

Il resto non sarebbe "4"? '18% 7 === 4'. – elclanrs

+0

Forse il resto non è il nome corretto. Voglio quel bit in virgola mobile. –

risposta

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

Perché non 'Math.trunc'? Quindi funziona anche con numeri negativi. – letmaik

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

Nella maggior parte della matematica, non c'è reale necessità di distinzione tra la parte frazionaria e l'intera porzione, specialmente dato che il tutto può essere espressa come frazione (18/7ths), come un vero e proprio numero, o come un mix di interi e frazioni (2 e 4/7).

Quando si entra in programmazione o in ingegneria o in qualche altro derivato, si hanno usi definiti per la separazione; ma il quoziente è in realtà il tutto, numero intero e frazione, tuttavia si sceglie di rappresentarlo.

+0

Questa risposta (utilizza aritmetica semplice) è migliore della risposta accettata che dipende dalla libreria Math. – Curious

+0

Qui, il quoziente può avere indotto errori di arrotondamento attraverso il resto. – Ethan

0

In realtà, 2 è il quoziente e 4/18 è il resto.

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)

/* valore restituito: (stringa) */

2 e 4/18

2

2 è il quoziente (o parte intera del risultato), 4 è il resto e 4/7 è la parte in virgola mobile del risultato, che l'OP sta richiedendo.

var result = (18/7); 
var integerPart = Math.floor(result); 
var floatingPointPart = result - integerPart; 

integerPart e floatingPointPart sono i valori richiesti.

1

Siamo in grado di utilizzare la matematica semplice per ottenere risposta utilizzando solo /% operatore.

Considerare 'num1' come primo valore & 'num2' come secondo valore. Poi:

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

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

Math.floor ha il problema di arrotondamento del risultato di direzione sbagliata in caso di numero negativo sarebbe meglio usare dell'operazione bit a bit per ottenere quozienti interger.

var quot = ~~(num/num1) 

Speriamo che questo funzioni per voi!

Problemi correlati