Apache 四舍五入结果分数

Apache 四舍五入结果分数,apache,math,rounding,fractions,Apache,Math,Rounding,Fractions,是否可以对分数进行四舍五入,例如,3/2变为1+1/2和11/2变为5+1/2 尝试 Fraction f = new Fraction(3, 2); System.out.println(f.abs()); FractionFormat format = new FractionFormat(); String s = format.format(f); System.out.println(s); 结果: 3 / 2 3 / 2 看起来你要找的是一个 由于我不认为Apache F

是否可以对分数进行四舍五入,例如,
3/2
变为
1+1/2
11/2
变为
5+1/2

尝试

Fraction f = new Fraction(3, 2);

System.out.println(f.abs());

FractionFormat format = new FractionFormat();

String s = format.format(f);

System.out.println(s);
结果:

3 / 2
3 / 2

看起来你要找的是一个

由于我不认为Apache Fractions内置了此功能,因此可以使用以下自定义格式化程序:

public static String formatAsMixedNumber(Fraction frac) {
    int sign = Integer.signum(frac.getNumerator())
            * Integer.signum(frac.getDenominator());
    frac = frac.abs();
    int wholePart = frac.intValue();
    Fraction fracPart = frac.subtract(new Fraction(wholePart));
    return (sign == -1 ? "-" : "")
            + wholePart
            + (fracPart.equals(Fraction.ZERO) ? ("") : ("+" + fracPart));
}

你想把它四舍五入到最接近的整数吗?还是别的什么?您想将1/2向上、向下或偶数整数取整吗?@Teepeemm可能
向上取整
不正确。如果
7/4
,那么它应该是
1 3/4
,因此您希望将分数分为整数部分和适当的分数部分,而不是您得到的不适当的分数。它显示为
fraction.intValue()
获得第一部分,您可以减去其余部分。还是我对API的解读不正确?