java中使用分数

分数是一个不是整数而是由两个数字组成的量。分数有两部分:分子和分母,以“/”分隔。分数的例子是: 15/2, 35/6
分数应始终以简化(或最简单)形式表示,其中没有分子和分母的公倍数。

 
例如, 56/12 不是它的约数,因为它的分子和分母仍然有公倍数。它的简化形式将是 14/3(分子和分母都除以 4)。
为了将分数简化为最简单的形式,计算其分子和分母的最大公约数 (GCD)。GCD是分子和分母的公倍数中最大的数。
分子和分母都除以 GCD 得到分数的约简形式。在上述情况下,56 和 12 的 GCD 是 4,分子和分母除以 4 得到 14/3,这是最简单的分数形式。

 

分数的
运算 所有数学运算也对分数进行,但有不同的方法。常见的操作有:

加法:将两个分数相加,第一个分数的分子乘以第二个分数的分母,第二个分数的分子乘以第二个分数的分母,两者相加形成所得分数的分子。所得分数的分母由两个分数的分母相乘确定。最后,所得分数减少到最低形式。
例如, 2/7 + 7/4 = (2 * 4) + (7 * 7) / (7 * 4) = 57/28

减法: 与加法类似,第一个分数的分子乘以第二个分数的分母,第二个分数的分子乘以第二个分数的分母,两者相减以形成所得分数的分子。所得分数的分母由两个分数的分母相乘确定。例如, 11/3 – 2/5 = (11 * 5) – (2 * 3) / (3 * 5) = 49/15

乘法:这是直截了当的。第一个分数的分子乘以第二个分数的分子,第二个分数的分母乘以第二个分数的分母。最后,所得分数被简化为最简单的形式。  例如, 14/5 * 2/7 = (14 * 2) / (5 * 7) = 28/35 = 4/5(简化为最简单的形式)

除法:第一个分数的分子与第二个的分母相乘,第一个分数的分母与第二个的分子相乘,得到的分数简化为最简单的形式。例如, 12/7 ÷ 4/3 = 36/28 = 9/7(简化为最简单的形式)

 

 

 

使用java程序操作

下面给出了对分数执行上面列出的所有数学运算的 Java 程序。

public class Fraction {

	int numerator;
	int denominator;

	/**
	 * Constructor
	 * 
	 * @param numr
	 * @param denr
	 */
	public Fraction(int numr, int denr) {
		numerator = numr;
		denominator = denr;
		reduce();
	}

	public int getNumerator() {
		return numerator;
	}

	public void setNumerator(int numerator) {
		this.numerator = numerator;
	}

	public int getDenominator() {
		return denominator;
	}

	public void setDenominator(int denominator) {
		this.denominator = denominator;
	}

	/**
	 * Calculates gcd of two numbers
	 * 
	 * @param numerator
	 * @param denominator
	 * @return
	 */
	public int calculateGCD(int numerator, int denominator) {
		if (numerator % denominator == 0) {
			return denominator;
		}
		return calculateGCD(denominator, numerator % denominator);
	}

	/**
	 * Reduce the fraction to lowest form
	 */
	void reduce() {
		int gcd = calculateGCD(numerator, denominator);
		numerator /= gcd;
		denominator /= gcd;
	}

	/**
	 * Adds two fractions
	 * 
	 * @param fractionTwo
	 * @return
	 */
	public Fraction add(Fraction fractionTwo) {
		int numer = (numerator * fractionTwo.getDenominator()) + (fractionTwo.getNumerator() * denominator);
		int denr = denominator * fractionTwo.getDenominator();
		return new Fraction(numer, denr);
	}

	/**
	 * Subtracts two fractions
	 * 
	 * @param fractionTwo
	 * @return
	 */
	public Fraction subtract(Fraction fractionTwo) {
		int newNumerator = (numerator * fractionTwo.denominator) - (fractionTwo.numerator * denominator);
		int newDenominator = denominator * fractionTwo.denominator;
		Fraction result = new Fraction(newNumerator, newDenominator);
		return result;
	}

	/**
	 * Multiples two functions
	 * 
	 * @param fractionTwo
	 * @return
	 */
	public Fraction multiply(Fraction fractionTwo) {
		int newNumerator = numerator * fractionTwo.numerator;
		int newDenominator = denominator * fractionTwo.denominator;
		Fraction result = new Fraction(newNumerator, newDenominator);
		return result;
	}

	/**
	 * Divides two fractions
	 * 
	 * @param fractionTwo
	 * @return
	 */
	public Fraction divide(Fraction fractionTwo) {
		int newNumerator = numerator * fractionTwo.getDenominator();
		int newDenominator = denominator * fractionTwo.numerator;
		Fraction result = new Fraction(newNumerator, newDenominator);
		return result;
	}

	/**
	 * Returns string representation of the fraction
	 */
	@Override
	public String toString() {
		return this.numerator + "/" + this.denominator;
	}

	public static void main(String[] args) {
		Fraction f1 = new Fraction(25, 35);
		System.out.println(f1.toString());
		Fraction f2 = new Fraction(2, 7);
		Fraction f3 = f1.add(f2);
		System.out.println("Result of addition of " + f1 + " and " + f2 + " is : " + f3);
		f3 = f1.subtract(f2);
		System.out.println("Result of subtraction of " + f1 + " and " + f2 + " is : " + f3);
		f3 = f1.divide(f2);
		System.out.println("Result of division of " + f1 + " and " + f2 + " is : " + f3);
		f3 = f1.multiply(f2);
		System.out.println("Result of multiplication of " + f1 + " and " + f2 + " is : " + f3);
	}
}

 

输出

7/4 和 2/7 相加的
结果是:57/28 7/4 和 2/7 相减的
结果是:41/28 7/4 和 2/7 相除的
结果是:49/8 7/4 和 2/7 的乘法是:1/2

 

 

解释
上面的类描述了一个 Fraction ,它有两个字段代表分数的分子和分母。该类具有用于初始化分数字段的构造函数。
它还包含一种reduce将分数转换为其简化形式的方法。因此,调用分数 25/35 的此方法将其转换为 5/7。它在内部计算分数的 gcd,它是分数的分子和分母的最大倍数,然后将分子和分母除以这个 gcd。
计算gcd的方法是一种递归方法,它不断调用自己,直到分子除以分母的余数为0。因此,对于分子为25,分母为35的分数,最大公约数为5,简化分数变为( 25 ÷ 5) / (35 ÷ 5) = 5/7。
该类包含对分数进行加、减、乘和除的方法,并处理如上所述的类似算法。
所有这些方法都接受一个 Fraction 对象作为参数,作为第二个分数。第一个部分是调用这些方法的对象。
该类还包含一个toString() 方法,该方法以分数的“分子/分母”的形式返回分数的字符串版本。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值