js 分数的乘法与除法运算

js中进行分数的乘法运算:

function multiply(paraX,paraY){
//为了后面统一处理,这儿先统一转化为分数
if(paraX.indexOf("/")==-1){
paraX=paraX+"/1";
}else{
paraX=paraX;
}
if(paraY.indexOf("/")==-1){
paraY=paraY+"/1";
}else{
paraY=paraY;
}

var numeratorX=paraX.split("/")[0];//x的分子
var denominatorX=paraX.split("/")[1];//x的分母
var numeratorY=paraY.split("/")[0];//y的分子
var denominatorY=paraY.split("/")[1];//y的分母

var numerator=numeratorX*numeratorY;//运算之后的分子
var denominator=denominatorX*denominatorY;//运算之后的分母
// 计算最大公约数
var divisor=gcd(numerator,denominator);

numerator=numerator/divisor;
denominator=denominator/divisor
if(denominator==1)
return numerator;
else
return numerator+"/"+denominator;

}

//计算最大公约数
function gcd(a,b){
if (b == 0){ 
return a;  
}
var r = parseInt(a % b) ;   
  return gcd(b, r);

}


//除法的话,只需要把后面这个乘数的分子分母进行交换即可
function divide(paraX,paraY){
if(paraX.indexOf("/")==-1){
paraX=paraX+"/1";
}else{
paraX=paraX;
}
if(paraY.indexOf("/")==-1){
paraY=paraY+"/1";
}else{
paraY=paraY;
}
var numeratorX=paraX.split("/")[0];//x的分子
var denominatorX=paraX.split("/")[1];//x的分母
var numeratorY=paraY.split("/")[1];//y的分子
var denominatorY=paraY.split("/")[0];//y的分母

var numerator=numeratorX*numeratorY;//运算之后的分子
var denominator=denominatorX*denominatorY;//运算之后的分母
// 计算最大公约数
var divisor=gcd(numerator,denominator);

numerator=numerator/divisor;
denominator=denominator/divisor
if(denominator==1)
return numerator;
else
return numerator+"/"+denominator;
}

你可能感兴趣的:(js 分数的乘法与除法运算)