2012-09-21 46 views
11

En mi calculadora cuando lo hago 18/7 obtengo 2.5714285714285714285714285714286. De mis habilidades matemáticas superlimitadas 2 es el cociente y .5714285714285714285714285714286 es el resto.¿Cómo obtengo el cociente como int y el resto como un punto flotante en JavaScript

¿Cómo puedo modelar esto en JavaScript?

Gracias!

+2

¿No sería el resto '4'? '18% 7 === 4'. – elclanrs

+0

Quizás remainder no es el nombre correcto. Quiero ese punto flotante. –

Respuesta

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

¿Por qué no 'Math.trunc'? Entonces también funciona con números negativos. – letmaik

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

En la mayoría de las matemáticas, no hay necesidad real de distinción entre la parte fraccionaria y toda la porción, especialmente teniendo en cuenta que todo el asunto se puede expresar como una fracción (18/7ths), como un verdadero número, o como una mezcla de enteros y fracciones (2 y 4/7ths).

Cuando entra en programación o ingeniería, o alguna otra derivada, tiene usos definidos para la separación; pero el cociente es realmente todo, entero y fracción, como decidas representarlo.

+0

Esta respuesta (usa aritmética simple) es mejor que la respuesta aceptada que depende de la biblioteca Math. – Curious

+0

Aquí, el cociente puede tener errores de redondeo inducidos por el resto. – Ethan

0

En realidad, 2 es el cociente y 4/18 es el 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)

/valor * devuelto: (String) */

2 y 4/18

2

2 es el cociente (o parte entera del resultado), 4 es el resto, y 4/7 es la parte del resultado flotante, que el OP está solicitando.

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

integerPart y floatingPointPart son los valores solicitados.

1

Podemos utilizar las matemáticas simples para obtener una respuesta utilizando solo / & % operador.

Considere 'num1' como primer valor & 'num2' como segundo valor. Entonces:

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

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

Math.floor tiene el problema de redondeo del resultado a la dirección equivocada en el caso de un número negativo que sería mejor usar operación en modo bit para obtener cocientes número entero.

var quot = ~~(num/num1) 

Espero que esto funcione para usted!

Cuestiones relacionadas