标签:
/*Java中没有提供表示有理数的类。有理数类*/public class Rational {private long numerator = 0; //分子private long denominator = 1; //分母//构造函数public Rational() {this(0,1);}public Rational(long numerator, long denominator) {long gcd = gcd(numerator,denominator);this.numerator= ((denominator>0)? 1 : -1)*numerator / gcd;this.denominator=Math.abs(denominator)/gcd;}//求最大公约数,便于简化有理数public static long gcd(long n,long d){long n1=Math.abs(n);long n2=Math.abs(d);int gcd=1;for(int k=1;k<=n1&&k<=n2;k++){if(n1%k==0&&n2%k==0){gcd=k;}}return gcd;}//生成器public long getNumerator(){return numerator;}public long getDenominator(){return denominator;}//实现加法public Rational add(Rational secondRational){long n=numerator*secondRational.getDenominator()+denominator*secondRational.getNumerator();long d=denominator*secondRational.getDenominator();return new Rational(n,d);}//实现减法public Rational subtract(Rational secondRational){long n=numerator*secondRational.getDenominator()-denominator*secondRational.getNumerator();long d=denominator*secondRational.getDenominator();return new Rational(n,d);}//实现乘法public Rational multiply(Rational secondRational){long n=numerator*secondRational.getNumerator();long d=denominator*secondRational.getDenominator();return new Rational(n,d);}//实现除法public Rational divide(Rational secondRational){long n=numerator*secondRational.getDenominator();long d=denominator*secondRational.numerator;return new Rational(n,d);}//重写toString类public String toString(){if(denominator==1){return numerator+"";}else{return numerator+"/"+denominator;}}public boolean equals(Object praml){if((this.subtract((Rational)(praml))).getNumerator()==0){return true;}else{return false;}}public int intValue(){return (int)doubleValue();}public float floatValue(){return (float)doubleValue();}public double doubleValue(){return numerator*1.0/denominator;}public long longValue(){return (long)doubleValue();}//实现Comparable接口,compare方法public int compareTo(Object o){if((this.subtract((Rational)o)).getNumerator()>0){return 1;}else{return 0;}}}
标签:
原文地址:http://www.cnblogs.com/zeroves/p/4517791.html