我正在快速上课
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 我如何修复我的分子,它没有用这个程序产生正确的结果
答案 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的情况下计算分子。