如何在java中表示混合分数

时间:2010-11-24 18:01:02

标签: java

有一种方法可以表示here以上的分数。是否有明确的抽象来表示混合分数,以便您可以对其执行加法,减法,乘法运算。

6 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:6)

你可以通过扩展Fraction来做到这一点:你可能想要添加一个新的构造函数,除了分子/分母new MixedFraction(2,3,4)之外还需要2 3/4的整数,并覆盖{ {1}}以所需格式显示。

答案 2 :(得分:3)

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

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

答案 3 :(得分:1)

我认为如果你把数字跟踪为分子和分母(不正确的分数 - 分子大于分母),它可以简化你的任务:

public class myFraction {
    int numerator;
    int denominator;

    ... constructors and methods ...
}

然后,当您想要进行加法和减法时,您可以更快地找到LCD,并且您可以使用一种表示法。

当您想将其显示为字符串时,您可以轻松找到整个分区的数量[即floor(分子/分母)]你可以使用模数找到余数:

numerator % denominator + "/" + denominator

或者你可以保存从地板(分子/分母)得到的值,并从原始分区中减去它,这将得到分数分量(0 <= x <1),即

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

我很久以前学习代数时使用的计算器有一个混合分数显示,并显示答案为 3u1 / 3 (对于“单位”)

有几种方法可以减少操作次数,从而从数字中获取所需的所有事实。您是否正在对十进制数进行操作,您必须将其转换为混合分数,或者您是从头开始进行输入?

我不知道任何内置此功能的基于Java的API,但实现起来并不难,绝对是一个很好的练习

答案 4 :(得分:1)

看起来您可以使用FractionFormatProperFractionFormat(在您引用的相同Apache Commons包中)在Fraction个对象和代表混合分数的String对象之间进行转换。

答案 5 :(得分:0)

如果您只想将您的分数显示为混合分数,请尝试此操作!

     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(".");