我的程序中有以下方法返回分数的带分数形式:
//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;
}
随时询问您是否需要更多帮助。