How to output fraction instead of decimal number?

后端 未结 13 2071
余生分开走
余生分开走 2020-12-01 21:59

In C++, When I calculate 2/3, it will output decimal values, how can I just get the original format (i.e.g 2/3) instead of 0.66666667

Thanks

13条回答
  •  温柔的废话
    2020-12-01 22:29

    write your own Rational class to calculate divisions

    class Rational
    {
    public:
        int numerator, denominator;
    
        Rational(int num, int den=1){
            numerator = num;
            denominator=den;
        }
        Rational(Rational other){
            numerator = other.numerator;
            denominator = other.denominator;
        }
        double operator / (int divisor){
                denominator *= divisor;
                simplificate();
                return getrealformat();
        }
        Rational& operator / (int divisor){
                denominator *= divisor;
                simplificate();
                return this;
        }
        Rational& operator / (Rational &divisor){
                numerator *= divisor.numerator;
                denominator *= divisor.denominator;
                simplificate();
                return this;
        }
        double operator / (int divisor){
                denominator *= divisor;
                simplificate();
            return getrealformat();
        }
        double getrealformat(){
            return numerator/denominator;
        }
        simplificate(){
            int commondivisor = 1;
            for(int i=2;i<=min(abs(numerator), abs(denominator));i++)
                if( numerator%i == 0 && denominator%i == 0 )
                    commondivisor = i;
            numerator /= commondivisor;
            denominator /= commondivisor;
        }
    };
    

    use

    Rational r1(45), r2(90), r3=r1/r2;
    cout<

提交回复
热议问题