直接自己封装一个类
class Fraction
{
int numerator;//分子
int denominator;//分母
public int Numerator
{
get
{
return numerator;
}
set
{
numerator = value;
}
}
public int Denominator
{
get
{
return denominator;
}
set
{
denominator = value;
}
}
public Fraction(int n,int d)
{
int x = GCD(n,d);
this.Numerator = n/x;
this.Denominator = d/x;
}
private int GCD(int a, int b)//最大公约数
{
int res = 0;
int tmp = 0;
while (b > 0)
{
tmp = a % b;
a = b;
b = tmp;
}
res = a;
return res;
}
private int LCM(int a, int b)//最小公倍数
{
int x = GCD(a,b);
return (a / x) * (b / x) * x;
}
public string Add(Fraction other)
{
//2/3+3/4=17/12 先求分母的最小公倍数然后。。。都上个小学吧
int d = LCM(this.Denominator,other.Denominator);
int n = this.Numerator * other.Denominator + other.Numerator * this.Denominator;
return String.Format(this.ToString()+"+"+other.ToString()+"={0}/{1}", n, d);
}
public string Minus(Fraction other)
{
int d = LCM(this.Denominator, other.Denominator);
int n = this.Numerator * other.Denominator - other.Numerator * this.Denominator;
string str= String.Format(this.ToString() + "-" + other.ToString() + "={0}/{1}", n, d);
if (n==0)
str = String.Format(this.ToString() + "-" + other.ToString() + "=0");
return str;
}
public override string ToString()
{
return String.Format("{0}/{1}", Numerator, Denominator);
}
}
其实就是利用了最大公约数和最小公倍数,乘除就不写了