c# Fraction不会使用Reduce()方法

本文关键字:Reduce 方法 Fraction | 更新日期: 2023-09-27 18:16:15

我需要将两个分数相乘,然后减少结果分数,但我不知道如何使我的结果分数通过我的reduce ();方法。

public class Fraction
{
    public static Fraction operator * (Fraction fract1, Fraction fract2)
    {
        int numerato = fract1.numerator * fract2.numerator;
        int denominato = fract1.denominator * fract2.denominator;
        return new Fraction(numerato, denominato).Reduce();
    }
} 

c# Fraction不会使用Reduce()方法

操作符*和Reduce()的写法如下:

    public static Fraction operator * (Fraction fract1, Fraction fract2)
    {
        int numerato = fract1.numerator * fract2.numerator;
        int denominato = fract1.denominator * fract2.denominator;
        return new Fraction (numerato, denominato).Reduce ();
    }
    private Fraction Reduce()
    {
        int gcd = Gcd (numerator, denominator);
        numerator = numerator / gcd;
        denominator = denominator / gcd;
        return this;
    }

还有另一种方法

    public static Fraction operator * (Fraction fract1, Fraction fract2)
    {
        int numerato = fract1.numerator * fract2.numerator;
        int denominato = fract1.denominator * fract2.denominator;
        Fraction f = new Fraction (numerato, denominato);
        f.Reduce ();
        return f;
    }
    private void Reduce()
    {
        int gcd = Gcd (numerator, denominator);
        numerator = numerator / gcd;
        denominator = denominator / gcd;
    }