如何在java中表示混合分数

如何在java中表示混合分数,java,Java,有一种方法可以表示上面的分数。是否有一个清晰的抽象来表示混合分数,以便您可以对其执行加法、减法和乘法运算。混合分数只是一个显示差异,而不是一个数学差异。打印答案时,您可以将其转换为混合分数。好吧,我认为您可以通过将分数部分与整数相加,将其转换为不正确的分数,使用链接页面中提到的方法执行操作,然后通过执行以下操作将其转换回混合分数: String turnImproperFractionToMixedFraction(Fraction f) { int a = f.getNumerator

有一种方法可以表示上面的分数。是否有一个清晰的抽象来表示混合分数,以便您可以对其执行加法、减法和乘法运算。

混合分数只是一个显示差异,而不是一个数学差异。打印答案时,您可以将其转换为混合分数。

好吧,我认为您可以通过将分数部分与整数相加,将其转换为不正确的分数,使用链接页面中提到的方法执行操作,然后通过执行以下操作将其转换回混合分数:

String turnImproperFractionToMixedFraction(Fraction f) {
    int a = f.getNumerator() / f.getDenominator();
    int b = f.getNumerator() % f.getDenominator();
    return a != 0 ? (a + " " + b + "/" + f.getDenominator()) : (b + "/" + f.getDenominator());
}
利用这一点,我们可以做到:

Fraction f = new Fraction(8, 3);
System.out.println(turnImproperFractionToMixedFraction(f));

它应该打印出
2 2/3

您可以通过扩展
分数来实现这一点:您可能需要添加一个新的构造函数,除了分子/分母
新的混合分数(2,3,4)
,还需要一个整数,并覆盖
toString
以所需格式显示。

我认为,如果您将数字作为分子和分母进行跟踪(不正确的分数-分子也大于分母),则可以简化您的任务:

public class myFraction {
    int numerator;
    int denominator;

    ... constructors and methods ...
}
然后,当你想做加法和减法运算时,你可以更快地找到LCD,你可以用一种表示法

当您想将其显示为字符串时,您可以很容易地找到整段的数量[即楼层(分子/分母)],并且可以使用以下任一模数找到余数:

numerator % denominator + "/" + denominator

或者,您可以保存从floor(分子/分母)获得的值,并从原始除法中减去它,这将得到分数分量(0看起来您可以使用
FractionFormat
ProperFractionFormat
(在您引用的同一Apache Commons包中)要在
分数
对象和表示混合分数的
字符串
对象之间进行转换。

如果您只希望分数显示为混合分数,请尝试此操作!


你能举例说明加法等的表示法是什么意思吗@jzd-我想加上12/3+5 3/7=5/3+38/7=149/21,或者我应该编写一个单独的类MixedFraction,其中包含一个数字和一个分数,并实现所有所需的方法(例如加法、减法、乘法)关于它?@Jason:听起来对我来说是一个非常有效的解决方案,只要你喜欢写算术代码:-)我能看出你想要在内部同时拥有整数和分数(而不仅仅是不合适的分数)的唯一原因是如果你需要保留两者之间的区别(例如)2 3/4和1 7/4。我会加入一个检查,以避免像“0 1/2”这样的情况。我认为模数只是打印出2。在这种情况下,您仍然需要附加“/3”@sova一个好的点,我的遗漏,我会修改代码来做到这一点
int myDivision = numerator/denominator;
int myFloor = floor(myDivision);

int fracComponent = myDivision - myFloor; //a number between 0 and 1
int mixedNumerator = fracComponent * denominator; //the numerator of your mixed part
myFloor + " " + mixedNumerator + "/" + denominator //i.e. 3 1/3
     if ((numer >= denom) & (numer % denom == 0)){
        impFrac = numer / denom;
        System.out.print(numer);
        System.out.print("/"+denom);
        System.out.print(" is an improper fraction, and can be reduced to "+impFrac);
        System.out.println(".");
    }
    else if (numer > denom){
        impFrac = numer / denom;
        mixFrac = numer % denom;
        System.out.print(numer);
        System.out.print("/"+denom);
        System.out.print(" is an improper fraction, and its mixed fraction is "+impFrac);
        System.out.print(" and "+mixFrac);
        System.out.print("/"+denom);
        System.out.println(".");