數學相關類Math、BigInteger、BigDecimal

1 java。lang。Math類

java。lang。Math提供了一系列靜態方法用於科學計算;其方法的引數和返回值型別一般為double型。

l abs 絕對值

l acos,asin,atan,cos,sin,tan 三角函式

l sqrt 平方根

l pow(double a,doble b) a的b次冪

l log 自然對數

l exp e為底指數

l max(double a,double b)

l min(double a,double b)

l random() 返回0。0到1。0的隨機數

l long round(double a) double型資料a轉換為long型(四捨五入)

l toDegrees(double angrad) 弧度—>角度

l toRadians(double angdeg) 角度—>弧度

數學相關類Math、BigInteger、BigDecimal

2 java。math包的BigInteger和BigDecimal

Integer類作為int的包裝類,能儲存的最大整型值為231-1,Long類也是有限的,最大為263-1如果要表示再大的整數,不管是基本資料型別還是他們的包裝類都無能為力,更不用說進行運算了。

java。math包的BigInteger可以表示不可變的任意精度的整數。BigInteger 提供所有 Java 的基本整數運算子的對應物,並提供 java。lang。Math 的所有相關方法。另外,BigInteger 還提供以下運算:模算術、GCD 計算、質數測試、素數生成、位操作以及一些其他操作。

l 構造方法

n BigInteger(String val):根據字串構建BigInteger物件

l 常用方法

n BigInteger add(BigInteger val) :返回其值為 (this + val) 的 BigInteger。

n BigInteger subtract(BigInteger val) :返回其值為 (this - val) 的 BigInteger。

n BigInteger multiply(BigInteger val) :返回其值為 (this * val) 的 BigInteger。

n BigInteger divide(BigInteger val) :返回其值為 (this / val) 的 BigInteger。整數相除只保留整數部分。

n BigInteger remainder(BigInteger val) :返回其值為 (this % val) 的 BigInteger。

n BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 後跟 (this % val) 的兩個 BigInteger 的陣列。

n BigInteger pow(int exponent) :返回其值為 (thisexponent) 的 BigInteger。

@Testpublic void test2(){// long num1 = 12345678901234567890L;//out of range 超過long的範圍BigInteger num1 = new BigInteger(“12345678901234567890”);BigInteger num2 = new BigInteger(“92345678901234567890”);// System。out。println(“和:” + (num1 + num2));//錯誤的System。out。println(“和:” + num1。add(num2));System。out。println(“減:” + num1。subtract(num2));System。out。println(“乘:” + num1。multiply(num2));System。out。println(“除:” + num2。divide(num1));//兩個整數相除只保留整數部分System。out。println(“冪次方:” + num2。pow(5));}

一般的Float類和Double類可以用來做科學計算或工程計算,但是在商業計算中,要求數字精度比較高,所以用到java。math。BigDecimal類。BigDecimal類支援不可變的、任意精度的有符號十進位制定點數。

l 構造器

n BigDecimal(double val)

n BigDecimal(String val)

l 常用方法

n BigDecimal add(BigDecimal augend) :返回一個 BigDecimal,其值為 (this + augend),其標度為 max(this。scale(), augend。scale())。

n BigDecimal subtract(BigDecimal subtrahend) :返回一個 BigDecimal,其值為 (this - subtrahend),其標度為 max(this。scale(), subtrahend。scale())。

n BigDecimal multiply(BigDecimal multiplicand):返回一個 BigDecimal,其值為 (this × multiplicand),其標度為 (this。scale() + multiplicand。scale())。

n BigDecimal pow(int n) :返回其值為 (thisn) 的 BigDecimal,準確計算該冪,使其具有無限精度。

n BigDecimal divide(BigDecimal divisor): 返回一個 BigDecimal,其值為 (this / divisor),其首選標度為 (this。scale() - divisor。scale());如果無法表示準確的商值(因為它有無窮的十進位制擴充套件),則丟擲 ArithmeticException。

n BigDecimal divide(BigDecimal divisor, int roundingMode) :返回一個 BigDecimal,其值為 (this / divisor),其標度為 this。scale()。

n BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) :返回一個 BigDecimal,其值為 (this / divisor),其標度為指定標度。

@Testpublic void test3(){BigDecimal num1 = new BigDecimal(“-12。1234567890123456567899554544444332”);BigDecimal num2 = new BigDecimal(“89。6734567890123456567899554544444333”);System。out。println(“和:” + num1。add(num2));System。out。println(“減:” + num1。subtract(num2));System。out。println(“乘:” + num1。multiply(num2));System。out。println(“除:” + num2。divide(new BigDecimal(“2”)));//可以整除(除盡)就對,不能整除就報異常System。out。println(“除:” + num2。divide(num1,BigDecimal。ROUND_HALF_UP));System。out。println(“除:” + num2。divide(num1,BigDecimal。ROUND_DOWN));//往零的方向捨去System。out。println(“除:” + num2。divide(num1,BigDecimal。ROUND_FLOOR));//往小的方向捨去System。out。println(“除:” + num2。divide(num1,BigDecimal。ROUND_CEILING));//往大的方向捨去}

瞭解更多內容:

java常用類-字串String類

Java常用類-System系統類

Java常用類_包裝類Wrapper

Matcher 類的方法

JDK1。8之前日期時間類