JavaApi学习--Math类

Math类常用API详解

Math类中全部是静态方法,都可以用ClassName.funName()

字段
double E   自然对数e
double PI  圆周率

三角函数

cos()余弦

参数是弧度。 弧度= 2 Math.PI /360 * 度数    比如:60度 = 2 * Math.PI / 360 * 60
cos(60度)  Math.cos( 1.0/3 * Math.PI) = 0.5

sin()正弦

sin(30度) Math.sin(1.0 / 6 * Math.PI) = 0.5 

tan()正切

tan(45度) Math.tan(1.0 /4 * Math.PI) = 1

acos()反余弦

acos(0.5) = Math.acos(0.5) / Math.PI * 180 = 60度

asin()反正弦

asin(0.5) = Math.asin(0.5) / Math.PI * 180 = 30度

atan()反正切

atan(1) = Math.atan(1.0) / Math.PI * 180 = 45度

角度转换

toDegrees()将弧度转为角度

 System.out.println(Math.toDegrees(Math.PI)); //180

toRadians()将角度转弧度

System.out.println(Math.toRadians(180)); //3.141592653589793

求幂,开方,指数,对数

hypot(x,y) 返回x平方+y平方再求开方

经典的勾三股四弦五
System.out.println(Math.hypot(3, 4)); //5.0  sqrt(3^2 + 4^2)

cbrt(x)返回x的立方根

System.out.println(Math.cbrt(27)); //3.0

sprt(x)返回x的平方根

 System.out.println(Math.sqrt(4)); //2.0

scalb(x,y)返回 x * 2^y

System.out.println(Math.scalb(1.344, 2)); // 1.344 * 2^2 = 5.376

exp(x) 自然数e的x次方

 System.out.println(Math.exp(2.0)); //7.38905609893065  e^2

pow(x,y)返回x的y次幂

System.out.println(Math.pow(2, 3)); //8.0

expm1()自然数e的x次方减1

System.out.println(Math.expm1(2.0)); //6.38905609893065

log1p(x) 求x + 1 以e为底的对数

System.out.println(Math.log1p(1.718281828459045)); //1.0

log(x)求x以e为底的对数

 System.out.println(Math.log(2.718281828459045));

log10(x)求x以10为底的对数

System.out.println(Math.log10(10)); //1.0

getExponent(x)返回以2为底x的指数

System.out.println(Math.getExponent(1024)); //10

取整、取模四舍五入

ceil()向上取整

   System.out.println(Math.ceil(3.6)); //4.0
   System.out.println(Math.ceil(3.4)); //4.0

floor()向下取整

System.out.println(Math.floor(3.5)); //3.0

floor(x,y) x除于y的值再向下取整

System.out.println(Math.floorDiv(10, 4)); //2

floorMod(x,y)返回x对y取模

   System.out.println(Math.floorMod(4, 2)); //0
   System.out.println(Math.floorMod(3, 2));  //1

rint()向靠近的数取整

  System.out.println(Math.rint(2.5)); //2.0
  System.out.println(Math.rint(2.4)); //2.0
  System.out.println(Math.rint(2.6)); //3.0
  System.out.println(Math.rint(-2.6)); //-3.0
  System.out.println(Math.rint(-2.5)); //-2.0
  System.out.println(Math.rint(-2.4)); //-2.0

round() 四舍五入(负数有些和我们平常的不一样)

  System.out.println(Math.round(2.6)); //3
  System.out.println(Math.round(2.5)); //3
  System.out.println(Math.round(2.4)); //2
  System.out.println(Math.round(-2.6)); //-3
  System.out.println(Math.round(-2.5)); //-2
  System.out.println(Math.round(-2.4)); //-2

返回加工后的数

abs()取绝对值

System.out.println(Math.abs(-1));   // 1
System.out.println(Math.abs(-1.1F)); // 1.1
System.out.println(Math.abs(-1L));  // 1
System.out.println(Math.abs(-1.0)); // 1.0

copySing(x,y)用y的符号返回第一个数的值

    System.out.println(Math.copySign(0.5, -1.0)); //-0.5
    System.out.println(Math.copySign(0.5f, 1.0f)); //0.5

random()返回一个0-1之间的随机小数

 for (int i = 0; i < 10; i++) {
     System.out.println(Math.random());
 }
//        0.9072383311558234
//        0.7659940574619751
//        0.7978623317262958
//        0.38447672747439443
//		  ...

signum返回大于0则为1,等于0为0,小于0为-1

   System.out.println(Math.signum(2.0)); //1.0
System.out.println(Math.signum(0.5)); //1.0
System.out.println(Math.signum(0));  // 0.0
System.out.println(Math.signum(-1)); // -1.0

toIntExact()将Long类型截取最大的Int类型

System.out.println(Math.toIntExact(32134234312312321L));//321342343

nextAfter(x,y)返回x以y方向最相近的数

  -------2.5---->3.6---
  -----3.6<------4.5---
System.out.println(Math.nextAfter(2.5, 3.6)); //2.5000000000000004
System.out.println(Math.nextAfter(4.5, 3.6));  //4.499999999999999

nextDown()、nextUp()返回以负无穷/正无穷大方向的最相近的数

   ----负无穷<----1.2233---
   ----1.2233---->正无穷---     
System.out.println(Math.nextDown(1.2233)); //1.2232999999999998
System.out.println(Math.nextUp(1.2233));  //1.2233000000000003

返回一个或两个数之间的操作

decrementExact()返回一个减1的数超过返回则会报错

        System.out.println(Math.decrementExact(-1));
        System.out.println(Math.decrementExact(-2147483648)); //报异常

incrementExact()返回一个增1的数超过返回则会报错

System.out.println(Math.incrementExact(2147483647)); //报异常

multiplyExact(x,y)返回x*y超出范围则报异常

      System.out.println(Math.multiplyExact(3, 4)); //12
      System.out.println(Math.multiplyExact(3, 2147483647)); //报错

subtractExact(x,y)返回x-y,超出范围报错

     System.out.println(Math.subtractExact(3, 4)); //-1
     System.out.println(Math.subtractExact(3, 3)); //0
     System.out.println(Math.subtractExact(3, 2)); //1
     System.out.println(Math.subtractExact(-2, 2147483647)); //报异常 ArithmeticException

addExact(x,y)返回两数之和,超过范围则会报相应的错误

System.out.println(Math.addExact(2147483647, 23));
//Exception in thread "main" java.lang.ArithmeticException: integer overflow

System.out.println(Math.addExact(9223372036854775807L, 1L));
//Exception in thread "main" java.lang.ArithmeticException: long overflow

negateExact(x)对x取反超出范围则报错

System.out.println(Math.negateExact(2147483647)); //-2147483647
System.out.println(Math.negateExact(-2147483647)); //2147483647
System.out.println(Math.negateExact(-2147483648)); //报错

最小最大值

max(x,y)求两数中最大的数

  System.out.println(Math.max(3, 4)); //4
  System.out.println(Math.max(-3, -4)); //-3
  System.out.println(Math.max(Math.abs(-3), 4)); //4

min(x,y)求两数中最小的数

  System.out.println(Math.min(3, 4)); //3
  System.out.println(Math.min(-3, -4)); //-4
  System.out.println(Math.min(Math.abs(-3), 4)); //3
posted @ 2022-05-14 00:44  浪上了天  阅读(67)  评论(0编辑  收藏  举报