有一种方法可以表示here以上的分数。是否有明确的抽象来表示混合分数,以便您可以对其执行加法,减法,乘法运算。
答案 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)
看起来您可以使用FractionFormat
或ProperFractionFormat
(在您引用的相同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(".");