如何将neg混合数转换为不正确的分数?

时间:2015-11-18 04:19:05

标签: java fractions

我在我的分数类中有这个方法,

public void toImproper() {
    if (denom == 0) {

        denom = 1;
    }
    num = (denom * coeff) + num;
    coeff = 0;

}

我一直在使用这个分数计算器中的一些测试用例,例如-1_1 / 2 * 2,但我得到1作为我的答案(下一段清除了这一点)。

起初我把它变成了不正确的形式,因为我得到了输入,但是再次使它不合适给我一些问题。由于我的方法,它正在使-1_1 / 2 = -1/2。不正确形式的-1_1 / 2应为-3/2,但我的方法给出-1/2。这是因为它将系数乘以分母然后加上分子。所以对于分子你得到(-1 * 2)+ 1.我该如何解决这个问题?我想过使用Math.abs();但随后它使所有负面因素都是积极的。

谢谢!

1 个答案:

答案 0 :(得分:0)

问题基本上是如果输入-1 1/2(coeff=-1num=1denom=2),程序会将其视为(-1)+(1/2) )。也就是说,它将1/2部分解释为正面,就像通常那样。你需要做一些特殊的事情来欺骗程序,在这种情况下,1/2 真的意味着-1/2。

在分配给num之前插入此内容是欺骗程序的一种方法:

if (coeff < 0) {
    num = -num;
}