⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bigrational.java

📁 用写的计算角动量的程序。里面含有作者的文章出处。对科技人员非常有用
💻 JAVA
字号:
import java.math.*;// This class defines an object which is a rational number made up of // BigIntegers (which are part of the java 1.1 API) and also defines// a number of common mathematical operations on thempublic class BigRational {    public BigInteger numerator, denominator;        // Constructor methods.    // As a pair of BigIntegers:    public BigRational( BigInteger a, BigInteger b ) {	this.numerator = a.divide(a.gcd(b));    this.denominator = b.divide(a.gcd(b));    }    // As a single int    public BigRational( int a ) {	this.numerator = new BigInteger(java.lang.Integer.toString(a));	this.denominator = new BigInteger("1");    }					    // defaults to zero    public BigRational() {	this.numerator = new BigInteger("0");	this.denominator = new BigInteger("1");    }        // Private class methods        private BigRational simplify() {	BigInteger a = (this.numerator).gcd(this.denominator);	return new BigRational( (this.numerator).divide(a), 				(this.denominator).divide(a) );    }            // Now our public class methods        // addition of two BigRationals    public BigRational add(BigRational val) {	return (new BigRational( ((this.numerator).multiply(val.denominator)).add((this.denominator).multiply(val.numerator)),(this.denominator).multiply(val.denominator))).simplify();    }        // subtration of two BigRationals    public BigRational subtract(BigRational val) {	BigRational newval = new BigRational( val.numerator.negate(),					      val.denominator); 	return(this.add(newval));    }            // Now some multiply methods. We should be able to multiply a BigRational    // by an int, an Integer, a BigInteger, and a BigRational.    public BigRational multiply(BigRational val) {	return (		new BigRational(				numerator.multiply(val.numerator),				denominator.multiply(val.denominator)				)		).simplify();    }    public BigRational multiply(BigInteger val) {	return (		new BigRational(				(numerator).multiply(val),denominator)		).simplify();    }        // Division:    public BigRational divide(BigRational val) {	return (		new BigRational(				this.numerator.multiply(val.denominator),				this.denominator.multiply(val.numerator)				)		).simplify();    }    public BigRational divide(BigInteger val) {	return (		new BigRational(				this.numerator,				this.denominator.multiply(val)				)		).simplify();    }            // Conversion of a Big Rational to a string:    public String toString() {	if ((this.denominator).compareTo(new BigInteger("1"))==0)	    return (this.numerator).toString();	else	    return (this.numerator).toString()+"/"+		(this.denominator).toString();    }        // Comparison of two BigRationals    public boolean equals(BigRational val) {	if(this.numerator.equals(val.numerator) & 	   this.denominator.equals(val.denominator) )	    return true;	else	    return false;    }        // absolute value    public BigRational abs() {	if(this.numerator.compareTo( new BigInteger("0") ) < 0) {	    return ( new BigRational() ).subtract(this);	} else { return this; }    }        // Return as a big integer; assumes that the caller knows the     // denominator is unity. (I suppose we could return an error otherwise)    public BigInteger toBigInteger() {return(numerator);}    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -