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的解读不正确?