在此类中,有一个Rational构造函数,它使用两个数字作为参数并将其转换为分数。它使用私有方法gcd将分数减少到最低的条件。
我不了解的部分为何在计算dem和if条件背后的目的时,Rational构造函数为什么要使用Math.abs(y)。因此,当读取if条件时,方法是说分母是否小于0,例如-4,den = -4还是num变为正数4?例如,如果您对Rational参数有(-4,-8),那么Rational的构造函数值是1/2还是-1 / -2?

public class Rational {

 public Rational (int x, int y){
    int g = gcd(Math.abs(x), Math.abs(y));
    num = x / g;
    dem = Math.abs(y) / g;
    if ( y < 0 ) num = -num;
   }


 private int gcd(int x, int y){
    int r = x % y;
    while (r != 0){
    x = y;
    y = r;
    r = x % y;
     }
   return y;
   }

 private int num;
 private int dem;
 }

最佳答案

此类的编写者希望符号由分子携带。分母始终为正。因此,确实如果输入为6 / -8,则结果将为-3/4。您的另一个示例也是正确的:-6 / -8构造3/4。

关于java - 有理数的方法-分子和分母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17687593/

10-11 22:33
查看更多