otro - pasar parametros a una funcion javascript desde html
¿Hay una función de JavaScript que reduce una fracción (5)
Aquí hay una función recursiva usando ECMAScript 6 reduce. Funciona para la mayoría de las fracciones siempre que el resto no sea demasiado pequeño. 0 se ha redefinido para que funcione en arreglos como [1.2, 2.4, 12, 24]. Probé en Chrome e IE Edge por lo que puede comportarse de manera diferente en otros navegadores o actualizaciones. Por lo tanto, debería funcionar con una serie de flotadores.
Array.prototype.gcd = function () {
if (this.length === 0)
return null;
return this.reduce((prev, curr) => {
if (curr <= 1.00000000001e-12)
return prev
else
return [curr, prev % curr].gcd();
});
}
var reducedValueGCD = [1.2, 2.4, 12, 24, 240].gcd();
Buscar MDN reducir o más información here .
digamos que tenemos la fracción 2/4, se puede reducir a 1/2. ¿Hay alguna función de javascript que pueda hacer la reducción?
No, pero puedes escribir uno tú mismo con bastante facilidad. Básicamente, debes dividir las partes superior e inferior de la fracción por su "mayor denominador común" ... que puedes calcular a partir del algoritmo de Euclides.
Lea aquí para obtener más información: http://www.jimloy.com/number/euclids.htm
editar:
código (porque todos parecen estar haciéndolo, aunque esto no usa recursividad)
var FractionReduce = (function(){
//Euclid''s Algorithm
var getGCD = function(n, d){
var numerator = (n<d)?n:d;
var denominator = (n<d)?d:n;
var remainder = numerator;
var lastRemainder = numerator;
while (true){
lastRemainder = remainder;
remainder = denominator % numerator;
if (remainder === 0){
break;
}
denominator = numerator;
numerator = remainder;
}
if(lastRemainder){
return lastRemainder;
}
};
var reduce = function(n, d){
var gcd = getGCD(n, d);
return [n/gcd, d/gcd];
};
return {
getGCD:getGCD,
reduce:reduce
};
}());
alert(FractionReduce.reduce(3413358, 13427));
Para reducir una fracción, divide el numerador y el denominador por el Factor común más grande. Phrogz y David ya han proporcionado el código fuente ...
Sin embargo, si está buscando bibliotecas de JavaScript para manejar fracciones, aquí hay algunas para elegir.
Aquí hay un ejemplo usando Ratio.js .
var a = Ratio(2,4);
a.toString() == "2/4";
a.simplify().toString() == "1/2"; // reduce() returns a clone of the Ratio()
a.toString() == "2/4"; // Ratio functions are non-destructive.
Sé que ya hay una respuesta, pero quiero compartir una biblioteca JS que encontré cuando buscaba algo para convertir números decimales en fracciones y reducir fracciones .
La biblioteca llama Fraction.js , que fue realmente útil para mí y me ahorró mucho tiempo y trabajo. Espero que pueda ser muy útil para otra persona!
// Reduce a fraction by finding the Greatest Common Divisor and dividing by it.
function reduce(numerator,denominator){
var gcd = function gcd(a,b){
return b ? gcd(b, a%b) : a;
};
gcd = gcd(numerator,denominator);
return [numerator/gcd, denominator/gcd];
}
reduce(2,4);
// [1,2]
reduce(13427,3413358);
// [463,117702]