如何在java中表示混合分数

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

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

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

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

 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

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

 public class myFraction { int numerator; int denominator; ... constructors and methods ... } 

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

当你想把它显示为一个字符串时,你可以很容易地找到整个分区的数量[即楼层(分子/分母)],你可以使用模数找到余数:

 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 //ie 3 1/3 

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

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

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

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

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

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