怀旧网,博客详情:Java Math 类详解

1、java枚举类详解

2、java String 类和类方法详解

3、StringBuffer 详解

4、Java Math 类详解

5、java random详解

6、java Date类使用讲解

7、java 集合类详解

8、java算法二分查找

9、SpringBoot 在初始化加载无法使用@Value的时候读取配置文件教程

10、springboot 项目配置本地jar包导入

11、单个java文件运行需要带上jar包的用法

12、spring boot 项目配置https服务

13、Java异常详解

14、Java Collection的使用

15、Java List 集合

16、Java ArrayList 介绍

17、Java LinkedList 讲解

18、Java Set 集合介绍

19、Java HashSet 介绍

20、Java TreeSet 介绍

21、Java Map 介绍以及子类介绍

22、Java 多线程使用介绍

23、Java 注解讲解

24、Java 反射讲解

25、Java 反射讲解

26、HashMap 源码讲解

27、面向对象初级教学

28、Java整合JWT使用

原创

Java Math 类详解

Math类简介

直接使用无需导包

package java.lang;

不能被继承或者无子类(final修饰Math类)

public final class Math {}

构造器不能私有化(private 修饰)

Don't let anyone instantiate this class//不能被任何类进行实例化

private Math() {}

错误代码:

Math math=new Math();//Math不能实例化因为private关键字进行修饰

Error:(15, 11) java: Math() 在 java.lang.Math 中是 private 访问控制

Math函数中常用的一些方法

算术运算

  1. Math.abs(a):取a的绝对值
  2. Math.sqrt(a):取a的平方根
  3. Math.cbrt(a):取a的立方根
  4. Math.max(a,b):取a、b之间的最大值
  5. Math.min(a,b):取a、b之间的最小值
  6. Math.pow(a,b):取a的b平方

Math.abs(a) :取绝对值

方法描述
abs(double a)返回 double值的绝对值
// Math.abs() 取绝对值
System.out.println(7);//7
System.out.println(-7);//-7
System.out.println(Math.abs(10.3));//10.3
System.out.println(Math.abs(-10.3));//10.3

Math.sqrt(a):取平方根

方法描述
sqrt(double a)返回 double值的正确舍入正平方根
// 注:开平方根的参数不能为负数。
// Math.sqrt();开平方根
System.out.println(Math.sqrt(9));//3.0
System.out.println(Math.sqrt(16));//4.0
System.out.println(Math.sqrt(-16));//NaN

Math.cbrt(a):取立方根

方法描述
cbrt(double a)返回 double值的立方根
// Math.cbrt();开立方根
System.out.println(Math.cbrt(8));//2.0
System.out.println(Math.cbrt(27));//3.0
System.out.println(Math.cbrt(-27));//-3.0

Math.max(a,b): 取最大值

方法描述
max(double a, double b)返回两个 double值中较大的 double
// Math.max();取最大值
System.out.println(Math.max(2,3));//3
System.out.println(Math.max(5.3,4.6));//5.3
System.out.println(Math.max(-2.7,4));//4.0

Math.min(a,b):取最小值

方法描述
min(double a, double b)返回两个 double值中较小的 double
// Math.min();取最小值
System.out.println(Math.min(-1.8,6));//-1.8
System.out.println(Math.min(0.7,10));//0.7
System.out.println(Math.min(19,6));//6

Math.pow(a,b):计算a的b平方

方法描述
pow(double a, double b)返回第一个参数的值,该值是第二个参数的幂
// Math.pow()
System.out.println(Math.pow(2,0));//1.0
System.out.println(Math.pow(3,1));//3.0
System.out.println(Math.pow(2,2));//4.0

算术进位

  1. Math.ceil():逢余进一
  2. Math.floor():逢余舍一
  3. Math.rint():四舍五入
  4. Math.round():四舍五入

Math.ceil(a):取大于等于a的最小整数

方法描述
ceil(double a)返回大于或等于参数且等于整数的最小值 double
// Math.ceil()
System.out.println(Math.ceil(10.2));//11.0
System.out.println(Math.ceil(9.8));//10.0
System.out.println(Math.ceil(-10.2));//-10.0

Math.floor(a):取小于等于a的最大整数

方法描述
floor(double a)返回小于或等于参数且等于整数的最大值double
// Math.floor()
System.out.println(Math.floor(1.3));//1.0
System.out.println(Math.floor(0.8));//0.0
System.out.println(Math.floor(10.5));//10.0
System.out.println(Math.floor(-100.9));//-101.0

Math.rint():四舍五入,返回double值

方法描述
rint(double a)返回与 double值最接近的 double值,该值等于数学整数
// 注:在0.5时取偶数
System.out.println(Math.rint(10.1));//10.0
System.out.println(Math.rint(10.5));//10.0
System.out.println(Math.rint(10.8));//11.0
System.out.println(Math.rint(0.2));//0.0
System.out.println(Math.rint(0.5));//0.0
System.out.println(Math.rint(0.8));//1.0
System.out.println(Math.rint(-0.2));//-0.0
System.out.println(Math.rint(-0.5));//-0.0
System.out.println(Math.rint(-0.8));//-1.0
System.out.println(Math.rint(-10.2));//-10.0
System.out.println(Math.rint(-10.8));//-11.0
System.out.println(Math.rint(-10.5));//-10.0

Math.round():四舍五入,double时返回long值,float时返回int值

方法描述
round(double a)返回与参数最接近的 long ,并将关系四舍五入为正无穷大
round(float a)返回与参数最接近的 int ,并将关系四舍五入为正无穷大
System.out.println(Math.round(10.1));//10
System.out.println(Math.round(10.5));//11
System.out.println(Math.round(10.53));//11
System.out.println(Math.round(10.8));//11
System.out.println(Math.round(-10.1));//-10
System.out.println(Math.round(-10.5));//-10
System.out.println(Math.round(-10.53));//-11
System.out.println(Math.round(-10.9));//-11

随机数

  1. Math.random() 随机数,在范围 [0.0,1.0) 内随机取一个值
方法描述
random()返回带有正号的 double值,大于或等于 0.0且小于 1.0
// 注:返回类型为double类型。
System.out.println(Math.random());//[0.0,1.0)
System.out.println(Math.random()+1);//[1.0,2.0)
System.out.println(Math.random()*10);//[0.0,10.0)
System.out.println(Math.random()*10+1);//[1.0,11.0)
System.out.println(Math.random()*100+0.5);//[0.5,100.5)

三角函数

  1. Math.sin():正弦
  2. Math.cos():余弦
  3. Math.ten():正切

sin():正弦

public static double sin?(double a)

返回角度的三角正弦值。 特别案例:

  • 如果参数是NaN或无穷大,则结果为NaN。
  • 如果参数为零,则结果为零,其参数符号相同。

参数 :

  • a - 角度,以弧度表示。

(一周的弧度数为2πr/r=2π,360°角=2π弧度,因此,1弧度约为57.3°,即57°17’44.806’’,1°为π/180弧度)

// 注:输入的是以弧度值表示,返回的值在范围[-1,1]内
double PI = Math.PI;//double值比任何其他 pi更接近,圆的圆周与其直径的比率。
System.out.println(Math.sin(0));//0.0
System.out.println(Math.sin(6.28));//-0.0031853017931379904
System.out.println(Math.sin(9.42));//0.0047779425901285115
System.out.println(Math.sin(1.57));//0.9999996829318346
System.out.println(Math.sin(3.14));//0.0015926529164868282

cos():余弦

public static double cos?(double a)

返回角度的三角余弦值。 特别案例:

  • 如果参数是NaN或无穷大,则结果为NaN。
  • 结果必须是半单调的

参数:

  • a - 角度,以弧度表示。
// 注:输入的是以弧度值表示,返回的值在范围[-1,1]内
System.out.println(Math.cos(0));//1.0
System.out.println(Math.cos(1.57));//7.963267107332633E-4
System.out.println(Math.cos(3.14));//-0.9999987317275395
System.out.println(Math.cos(4.71));//-0.0023889781122815386
System.out.println(Math.cos(6.28));//-0.9999987317275395

ten():正切

public static double tan?(double a)

返回角度的三角正切。 特别案例:

  • 如果参数是NaN或无穷大,则结果为NaN。
  • 如果参数为零,则结果为零,其参数符号相同。

计算结果必须在精确结果的1 ulp范围内。 结果必须是半单调的。

参数

  • a - 角度,以弧度表示。
// 注:ten90°不存在
// 即输入的弧度不能为(π/2±kπ)返回的值在范围[-∞,+∞]内
System.out.println(Math.tan(0));//0.0
System.out.println(Math.tan(1.57));//1255.7655915007897
System.out.println(Math.tan(3.14));//-0.001592654936407223
System.out.println(Math.tan(4.71));//418.58782265388515
System.out.println(Math.tan(6.28));//-0.003185317952531891

Java Math类常用方法

Java中Math工具类提供了一些+,-,*,/和%等基本运算符不能完成的更复杂的数学运算,例如,三角函数,对数运算,指数运算等。

在Java中Math类封装了常用的数学运算,提供了基本的数学操作,如指数,对数,平方根和三角函数等。Math类位于java.lang包,它的构造方法时private的,因此无法创建Math类的对象,并且Math类中的所有方法都是类方法,可以直接通过类名来调用它们。

静态常量

Math类中包含E和PI两个静态常量,正如它们名字所暗示的,它们的值分别等于e(自然对数)和 π(圆周率)。

示例:调用Math类中的E和PI两个常量,并将结果输出。代码如下:

System.out.println("E常量的值:"+Math.E); // 2.718281828459045
System.out.println("PI常量的值:"+Math.PI); // 3.141592653589793

求最大值,最小值和绝对值

在程序中常见的就是求最大值,最小值和绝对值问题,如果使用Math类提供的方法可以很容易实现,这些方法如表所示:

方法说明
static int abs(int a)返回 a 的绝对值
static long abs(long a)返回 a 的绝对值
static float abs(float a)返回 a 的绝对值
static double abs(double a)返回 a 的绝对值
static int max(int x,int y)返回 x 和 y 中的最大值
static double max(double x,double y)返回 x 和 y 中的最大值
static long max(long x,long y)返回 x 和 y 中的最大值
static float max(float x,float y)返回 x 和 y 中的最大值
static int min(int x,int y)返回 x 和 y 中的最小值
static long min(long x,long y)返回 x 和 y 中的最小值
static double min(double x,double y)返回 x 和 y 中的最小值
static float min(float x,float y)返回 x 和 y 中的最小值

示例: 求 10 和 20 的较大值、15.6 和 15 的较小值、-12 的绝对值,代码如下:

System.out.println("10 和 20 的较大值:" + Math.max(10, 20)); // 10和20的较大值:20
System.out.println("15.6 和 15 的较小值:" + Math.min(15.6, 15)); // 15.6和15的较小值:15.0
System.out.println("-12 的绝对值:" + Math.abs(-12)); // -12的绝对值:12

求整运算

Math类的求整方法如表所示:

方法说明
static double ceil(double a)返回大于或等于 a 的最小整数
static double floor(double a)返回小于或等于 a 的最大整数
static double rint(double a)返回最接近 a 的整数值,如果有两个同样接近的整数,则结果取偶数
static int round(float a)将参数加上 1/2 后返回与参数最近的整数
static long round(double a)将参数加上 1/2 后返回与参数最近的整数,然后强制转换为长整型

示例:Math类中取整方法的应用:

double num = 99.01;
System.out.println("大于或等于 "+ num +" 的最小整数:" + Math.ceil(num)); // 大于或等于 99.01 的最小整数:100.0
System.out.println("小于或等于 "+ num +" 的最大整数:" + Math.floor(num)); // 小于或等于 99.01 的最大整数:99.0
System.out.println("将 "+ num +" 加上 0.5 之后最接近的整数:" + Math.round(num)); // 将 99.01 加上 0.5 之后最接近的整数:100
System.out.println("最接近 "+num+" 的整数:" + Math.rint(num)); // 最接近 99.01 的整数:99.0

三角函数运算

Math类中包含的三角函数方法及其说明如表所示:

方法说明
static double sin(double a)返回角的三角正弦值,参数以孤度为单位
static double cos(double a)返回角的三角余弦值,参数以孤度为单位
static double asin(double a)返回一个值的反正弦值,参数域在 [-1,1],值域在 [-PI/2,PI/2]
static double acos(double a)返回一个值的反余弦值,参数域在 [-1,1],值域在 [0.0,PI]
static double tan(double a)返回角的三角正切值,参数以弧度为单位
static double atan(double a)返回一个值的反正切值,值域在 [-PI/2,PI/2]
static double toDegrees(double angrad)将用孤度表示的角转换为近似相等的用角度表示的角
staticdouble toRadians(double angdeg)将用角度表示的角转换为近似相等的用弧度表示的角

每个方法的参数和返回值都是double类型,参数以弧度代替角度来实现。

示例:计算 90 度的正弦值、0 度的余弦值、1 的反正切值、120 度的弧度值,代码如下:

System.out.println{"90 度的正弦值:" + Math.sin(Math.PI/2)); // 90 度的正弦值:1.0
System.out.println("0 度的余弦值:" + Math.cos(0)); // 0 的余弦值:1.0
System.out.println("1 的反正切值:" + Math.atan(l)); // 1 的反正切值:0.7853981633974483
System.out.println("120 度的弧度值:" + Math.toRadians(120.0)); // 120 度的弧度值:2.0943951023931953

指数运算

指数运算包括求根,取对数及求n次方的运算。在Math类中定义的指数运算方法如表所示:

方法说明
static double exp(double a)返回 e 的 a 次幂
static double pow(double a,double b)返回以 a 为底数,以 b 为指数的幂值
static double sqrt(double a)返回 a 的平方根
static double cbrt(double a)返回 a 的立方根
static double log(double a)返回 a 的自然对数,即 lna 的值
static double log10(double a)返回以 10 为底 a 的对数

示例:使用 Math 类中的方法实现指数的运算

System.out.println("4 的立方值:" + Math.pow(4, 3)); // 4 的立方值:64.0
System.out.println("16 的平方根:" + Math.sqrt(16)); // 16 的平方根:4.0
System.out.println("10 为底 2 的对数:" + Math.log1O(2)); // 10 为底 2 的对数:0.3010299956639812

总结

​ 在Math函数中,还有许多关于数字的基本运算,但是基本上常用的一些方法都在上文有详细的列举,对于这些常用的方法还是需要熟练运用,避免在开发过程中或平时做任务遇到时,不知所措。

本篇博客,摘抄于博客

  • 平台作者:怀旧(联系作者)
  • QQ:444915368
  • 邮箱:444915368@qq.com
  • 电话:17623747368
  • 评论

    怀旧

    嘻嘻

    登录后才可以进行评论哦!

    回到顶部 留言