将馏分添加到当前馏分?

时间:2014-09-26 22:07:55

标签: java math fractions

我正在快速上课

Fraction.getGCF是一种使用分子和分母获取GCF的工作方法 Fraction.getLCD也是一种获得2分母LCD的工作方法

我试图将分子(n2)和分母(d2)添加到现有的分子和分母中。

首先我将传入的分数减少到最简单的术语,然后尝试将它们加在一起

public void addFraction(int n2, int d2)
{
    int gcf = Fraction.getGCF(n2, d2);
    n2 = n2/gcf;
    d2 = d2/gcf;
    numerator = (numerator*d2)+(denominator*n2);
    denominator = Fraction.getLCD(denominator, d2);
    this.reduce();
}

我的数学错了还是什么?分子= 1分母= 8(1/8)和n2 = 16,d2 = 64(16/64)所以我试图将1/8添加到16/64并且在最终结果后得到3/2降低。在最终减少之前,它导致12/8

TL; DR 我如何修复我的分子,它没有用这个程序产生正确的结果

2 个答案:

答案 0 :(得分:1)

您正在组合两种不同的算法。一种是执行a / b + c / d =(a * d + b * c)/(bd)。另一种是执行a / b + c / d =(a *(lcd(b,d)/ b)+ c *(lcd(b,d)/ d))/ lcd(b,d)

numerator = numerator*d2+n2*denominator;
denominator = denominator*d2;

int lcd = Fraction.getLCD(denominator, d2);
numerator = numerator*(lcd/denominator)+n2*(lcd/d2);
denominator = lcd;

所以在你的例子中它将是:

(1/8)+(16/64)=(1 * 64 + 16 * 8)/(8 * 64)= 192/512 = 3/8

(1/8)+(16/64)=(1 *(64/8)+ 16 *(64/64))/ 64 = 24/64 = 3/8

答案 1 :(得分:1)

最简单的解决方法是更改​​

denominator = Fraction.getLCD(denominator, d2);

denominator = denominator * d2;

这是有效的,因为您在不使用LCD的情况下计算分子。