我的程序中有以下方法返回分数的带分数形式:

//Method to return mixed number form of fraction
public String toMixed(){
    String mixedNum;
    int wholeNum;
    wholeNum = Math.floorDiv(numerator,denominator);

    if (wholeNum == 0){
        mixedNum = numerator + "/" + denominator;
    }
    else if (numerator % denominator == 0)
        mixedNum = wholeNum + "";
    else if (wholeNum < 0)
        mixedNum = wholeNum + " " +
            -1*(numerator - wholeNum*denominator) + "/" + denominator*-1;
    else
       mixedNum = wholeNum + " " +
            (numerator - wholeNum*denominator) + "/" + denominator;

    return mixedNum;


虽然这适用于正数,但我得到的负数收益不正确。我想知道的是,还有另一种更好的方法可以在Java中创建分数的混合数形式,还是通过先将发送给该​​方法的数字转换为负数(如果为负数)来使其更易于处理负数呢? ,然后将其转换为带分数,然后转换为负数?无论如何,我感谢您的时间和帮助,我希望这很容易理解!

最佳答案

假设n和d的GCD为1,且d不为负,这是您要执行的操作:

public static String toiMixed(int n, int d){
        if(n>=0) return n/d +"  "+ n%d + "/"+d;
        String s = n/d-1 + "  ";
        while((double)n/(double)d<0) n+=d;
        return s + n%d + "/" + d;
}


随时询问您是否需要更多帮助。

09-25 21:44