java中的Math類封裝的屬性和方法

???????? java.lang.Math類擁有基本的數學操作,如指數、對數、平方根和三角函數等等,使用它可以避免程序員自行研發數學方面的代碼。此外,java還有一個java.math包,它提供用于執行任意精度整數(BigInteger)算法和任意精度小數(BigDecimal)算法的類。

???????? 本文為大家展示Math類的常用方法。Math類屬于包java.lang,因此使用它時無需用import導入。Math類封裝的屬性和方法大致如下:

public class Main {

??? public static void main(String[] args) {

?????? // 兩個靜態成員變量

?????? System.out.println("自然對數的底數E是:" + Math.E); // 數學中的E(即自然對數的底數)。

?????? System.out.println("圓周率是:" + Math.PI);// 數學中的 圓周率。

?????? // 函數羅列于下

?????? /*

?????? ?* 1.求絕對值abs()

?????? ?*/

?????? System.out.println("絕對值是:" + Math.abs(-5.4));// 輸出5.4

?????? /*

?????? ?* 2.求最值

?????? ?* max(a,b)求最大值

?????? ?* min(a,b)求最小值

?????? ?*/

?????? System.out.println("最大值是:" + Math.max(1, 2)); // 輸出2

?????? System.out.println("最小值是:" + Math.min(1.9, -0.2));// 輸出-0.2

?????? /*

?????? ?* 3.求隨機數 random()返回[0.0,1.0)之間的double值。可進一步通過*x控制取值界限,見示例。

?????? ?*/

?????? // 輸出[0,100)之間的隨機整數

?????? System.out.println("1~100間的隨機數:" + (int) (Math.random() * 100));

?????? //////////// Exponential:冪、開方、對數等運算

?????? /*

?????? ?* 4.冪運算

?????? ?* pow(x,y) 返回x^y的值

?????? ?* exp(x) 返回e^x的值

?????? ?* expm1(x) 返回e^x - 1的值

?????? ?* 所有數據類型都是double

?????? ?*/

?????? System.out.println("2的平方是:" + Math.pow(2.0, 2.0));// 輸出8.0

?????? System.out.println("2的立方是:" + Math.pow(2.0, 3.0));// 輸出8.0

?????? System.out.println("e5次方是:" + Math.exp(5));// 輸出E^5的值

?????? System.out.println("e5次方減1是:" + Math.expm1(5));// 輸出E^5 -1 的值

?????? /*

?????? ?* 5.開方運算

?????? ?* sqrt(x)開平方,cbrt(x)開立方

?????? ?* hypot(x,y):等于sqrt(x*x+y*y)。在求兩點間距離時有用sqrt((x1-x2)^2+(y1-y2)^2)

?????? ?*/

?????? System.out.println("4的平方根 2次方:" + Math.sqrt(4.0));// 輸出2.0

?????? System.out.println("8的立方根 3次方:" + Math.cbrt(8.0));// 輸出2.0

?????? System.out.println("平方之和開2次方:" + Math.hypot(3.0, 4.0));// 輸出5.0

?????? /*

?????? ?* 6.對數

?????? ?* log(a) a的自然對數(底數是e)

?????? ?* log1p(a) a+1的自然對數

?????? ?* log10(a) a的底數為10的對數

?????? ?* 所有數據類型都是double型數據并返回double型數據

?????? ?*/

?????? System.out.println("E的自然對數:" + Math.log(Math.E));// 輸出1.0

?????? System.out.println("10的以10為底的自然對數:" + Math.log10(10));// 輸出1.0

?????? System.out.println("1后的自然對數:" + Math.log1p(Math.E - 1.0));// 輸出1.0

?????? /*

?????? ?* 7.三角函數與反三角函數

?????? ?* sin()求正弦,cos()求余弦,tan()求正切:參數都是以弧度表示的角

?????? ?* asin()求反正弦,acos()求反余弦,atan()求反正切

?????? ?* atan2(y,x)求向量(x,y)x軸夾角

?????? ?*/

?????? System.out.println("30° 的正弦值:" + Math.sin(Math.PI / 6));

?????? System.out.println("30° 的余弦值:" + Math.cos(Math.PI / 6));

?????? System.out.println("30° 的正切值:" + Math.tan(Math.PI / 6));

?????? System.out.println("弧度:" + Math.acos(1.0));// 輸出弧度0...

?????? System.out.println("弧度:" + Math.acos(-1.0));// 輸出圓周率3.14...

?????? System.out.println("夾角:" + Math.atan2(1.0, 1.0));// 輸出 π/4 的小數值

?????? /*

?????? ?* 8.角度和弧度的轉換

?????? ?* toDegrees(a) 弧度轉換成角度

?????? ?* toRadians(a) 角度轉換成弧度

?????? ?*/

?????? System.out.println("30° 對應的的弧度是:" + Math.toRadians(30));

?????? System.out.println("45° 對應的的弧度是:" + Math.toRadians(45));

?????? System.out.println("π/6 對應的的角度是:" + Math.toDegrees(Math.PI / 6));

?????? System.out.println("π/4對應的的角度是:" + Math.toDegrees(Math.PI / 4));

?????? System.out.println("PI 對應的的角度是:" + Math.toDegrees(Math.PI));// 輸出180.0

?????? System.out.println("180 對應的的弧度是:" + Math.toRadians(180));// 輸出 π的值

?????? /*

?????? ?* 9.取整

?????? ?*/

?????? // ceil(a):向上取整,返回大于a的第一個整數所對應的浮點數(值是整的,類型是浮點型)

?????? // 可以通過強制轉換將返回值強轉成整型

?????? System.out.println("向上取整:" + Math.ceil(1.3443));// 輸出2.0

?????? System.out.println("向上取整后再截斷:" + (int) Math.ceil(1.3443));// 輸出2

?????? // floor(a):向下取整,返回小于a的第一個整數所對應的浮點數(值是整的,類型是浮點型)

?????? System.out.println("向下取整:" + Math.floor(1.3443));// 輸出1.0

?????? // rint(a) 返回最接近a的整數的double值。如果有兩個整數同樣接近,就返回偶數的那個

?????? System.out.println("最接近:" + Math.rint(1.5));// 輸出2.0 12同樣接近,選擇2

?????? System.out.println("最接近:" + Math.rint(2.5));// 輸出2.0 23同樣接近,選擇2

?????? System.out.println("最接近:" + Math.rint(1.8));// 輸出2.0

?????? // round(a) 四舍五入.返回四舍五入后的整數值。

?????? System.out.println("四舍五入:" + Math.round(1.5));// 輸出2

?????? System.out.println("四舍五入:" + Math.round(2.5));// 輸出3

?????? System.out.println("四舍五入:" + Math.round(1.8));// 輸出2

?????? /*

?????? ?* 10.其他

?????? ?*/

?????? // copySign(x,y) 返回 y的符號取代x的符號后新的x

?????? System.out.println("符號拷貝:" + Math.copySign(-1.0, 2.0));// 輸出1.0

?????? System.out.println("符號拷貝:" + Math.copySign(2.0, -1.0));// 輸出-2.0

?????? // nextAfter(a,b) 返回(a,b)(b,a)間與a相鄰的浮點數 b可以比a小。b是控制條件

?????? System.out.println("a相鄰的浮點數:" + Math.nextAfter(1.2, 2.7));//輸出1.2000000000000002

?????? System.out.println("a相鄰的浮點數:" + Math.nextAfter(1.2, -1));//輸出1.1999999999999997

?????? // nextUp(a) 返回比a大一點點的浮點數

?????? System.out.println("大一點點的浮點數" + Math.nextUp(1.2));// 輸出1.2000000000000002

?????? // nextDown(a) 返回比a小一點點的浮點數

?????? System.out.println("小一點點的浮點數" + Math.nextDown(1.2));// 輸出1.1999999999999997

??? }

}

the end

評論(0)