由于程序中的浮点数不能准确表示一些实数,经过多次运算后会存在精度丢失导致计算结果越来越不准确的问题,这时可以考虑使用分数来进行数据的存储与运算,使用分数可以保证经过多次运算最终可以得到准确的结果。
实现class Fraction,保存分子numerator与分母denominator的值(保存前完成化简),并依次实现以下方法:
add:分数相加
subtract:分数相减
multiply:分数相乘
divide:分数相除
opposite:得到相反数
reciprocal:得到倒数
isInfinite:判断分数是否是无穷大
isZero:判断分数是否为零
isPositive:判断分数是否是正数
isNegative:判断分数是否是负数
compareTo:比较两个分数的大小
gcd:求最大公约数,用来化简分数
java代码实现:
public class Fraction implements Comparable<Fraction> {
public static final Fraction ZERO = new Fraction(0, 1);
public static final Fraction POSITIVE_INFINITE = new Fraction(1, 0);
public static final Fraction NEGATIVE_INFINITE = new Fraction(-1, 0);
public final in