09

it2024-09-29  41

Java的类包提供了一些常用类方便开发人员使用,例如我们之前讲过的:将基本数据类型封装起来的包装类 。接下来我们要学习解决常见数学问题的Math类。

一、Math类概述

开发人员可以使用运算符完成一些简单的数学运算,但是如果涉及到复杂运算,我们就需要用到Java提供的Math类,Math类中包含许多数学方法,比如最大值、最小值、绝对值、三角函数、指数运算、对数运算等等。除此之外,和Number包装类的Integer类一样,Math类也提供一些数字常量,比如PI、E等。

1、调用Math类的方法

Math类位于java.lang包中,封装着一些数学计算方法和常量。Math类中的数学方法都被定义为static形式,所以在程序中可以直接通过Math类的类型调用某个数学方法:

Math.数学方法

例如:

System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2)); System.out.println("0度的余弦值:" + Math.cos(0)); System.out.println("60度的正切值:" + Math.tan(Math.PI/3)); System.out.println("1的反正切值: " + Math.atan(1)); Console: 90 度的正弦值:1.0 0度的余弦值:1.0 60度的正切值:1.7320508075688767 1的反正切值: 0.7853981633974483

2、调用Math类的常量

在Math类中除了数学方法外还存在一些数学常量,比如PI、E等,这些数学常量作为Math类的成员变量存在,调用起来也很简单:

Math.PI; //调用圆周率π Math.E; //调用自然对数底数e

例如:

System.out.println("圆周率π的值是:"+Math.PI); System.out.println("自然对数底数e的值是:"+Math.E); System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2)); Console: 圆周率π的值是:3.141592653589793 自然对数底数e的值是:2.718281828459045 π/2的角度值:90.0

二、Math类常用运算方法

1、取值运算

方法返回值功能描述min(double a,double b)double返回两个双精度参数中的最小值。min(int a, int b)int返回两个整型参数中的最小值。min(float a , float b)float返回两个浮点型参数中的最小值。min(long a ,long b)long返回两个长整型参数中的最小值。max(double a,double b)double返回两个双精度参数中的最大值。fma(double a,double b,double c)double返回三个双精度参数中的最大值。abs(int a)int返回整型参数的绝对值。abs(float a)float返回浮点型参数的绝对值。abs(double a )double返回双精度参数的绝对值。abs(long a)long返回长整型参数的绝对值。random()double生成一个双精度的随机数

2、取整函数

方法返回值功能描述rint(float a)float返回与参数最接近的整数round(double a)double四舍五入,即将原来的数字加上 0.5 后再向下取整,返回双精度值round(folat a)float四舍五入,即将原来的数字加上 0.5 后再向下取整,返回浮点值floor(double a)double向下取整ceil(double a)double向上取整

3、三角函数

方法返回值功能描述sin(double a)double正弦cos(double a)double余弦tan(double a)double正切asin()double反正弦acos()double反余弦atan()double反正切atan2()double将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。toRadians(double angded)double将参数转化为角度。toDegrees(double angdeg)double将角度转换为弧度。

4、指对运算

方法返回值功能描述exp(double a)double自然底数指数运算log(double a)double自然底数对数运算log10(double a)double以10为底的对数运算sqrt(double a )double平方根cbrt(double a )double立方根pow(double a, double b)doublea的b次方

三、Math类方法的应用

实例1:使用Math类取最大值、最小值、绝对值及生成随机数

public class IntFunction { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("6和8中比较大的是:"+Math.max(6,8)); System.out.println("6.3和6.5中比较大的是:"+Math.max(6.3,6.5)); System.out.println("6.2,6.3,6.6中比较大的是:"+Math.fma(6.2,6.3,6.6)); System.out.println(" "); System.out.println("6和8中比较小的是:"+Math.min(6,8)); System.out.println("6.3和6.5中比较小的是:"+Math.min(6.3,6.5)); System.out.println(" "); System.out.println("6的绝对值"+Math.abs(6)); System.out.println("6.3的绝对值:"+Math.abs(6.3)); System.out.println("-6.7的绝对值:"+Math.abs(-6.7)); System.out.println(" "); double num1 = Math.random(); System.out.println("取一个随机数:"+ num1); System.out.println(" "); } } Console: 68中比较大的是:8 6.36.5中比较大的是:6.5 6.2,6.3,6.6中比较大的是:45.66 68中比较小的是:6 6.36.5中比较小的是:6.3 6的绝对值6 6.3的绝对值:6.3 -6.7的绝对值:6.7 取一个随机数:0.1500029019248258

实例2:比较不同取整方法的运算结果

public class AnyFunction { public static void main(String[] args) { // TODO Auto-generated method stub double[] nums = { 1.4, 1.5, 1.6, -1.4, -1.5, -1.6 }; for (double num : nums) { test(num); System.out.println(" "); } } private static void test(double num) { System.out.println("Math.rint(" + num + ")=" + Math.rint(num)); System.out.println("Math.floor(" + num + ")=" + Math.floor(num)); System.out.println("Math.round(" + num + ")=" + Math.round(num)); System.out.println("Math.ceil(" + num + ")=" + Math.ceil(num)); } } Console: Math.rint(1.4)=1.0 Math.floor(1.4)=1.0 Math.round(1.4)=1 Math.ceil(1.4)=2.0 Math.rint(1.5)=2.0 Math.floor(1.5)=1.0 Math.round(1.5)=2 Math.ceil(1.5)=2.0 Math.rint(1.6)=2.0 Math.floor(1.6)=1.0 Math.round(1.6)=2 Math.ceil(1.6)=2.0 Math.rint(-1.4)=-1.0 Math.floor(-1.4)=-2.0 Math.round(-1.4)=-1 Math.ceil(-1.4)=-1.0 Math.rint(-1.5)=-2.0 Math.floor(-1.5)=-2.0 Math.round(-1.5)=-1 Math.ceil(-1.5)=-1.0 Math.rint(-1.6)=-2.0 Math.floor(-1.6)=-2.0 Math.round(-1.6)=-2 Math.ceil(-1.6)=-1.0

实例3:实现指数、对数运算

public class ExponentFunction { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("e的平方:"+Math.exp(2) ); System.out.println("以e为底,e^2的对数是:"+Math.log(Math.exp(2))); System.out.println("以10为底,100的对数是:"+Math.log10(100)); System.out.println("100的平方根:"+Math.sqrt(100)); System.out.println("1000的立方根:"+Math.cbrt(1000)); System.out.println("10的15次方:"+ (long) Math.pow(10,15)); } } console: e的平方:7.38905609893065 以e为底,e^2的对数是:2.010为底,100的对数是:2.0 100的平方根:10.0 1000的立方根:10.0 1015次方:1000000000000000

实例4:实现三角函数运算

public class TrigonometricFunctions { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(Math.PI); System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2)); System.out.println("0度的余弦值:" + Math.cos(0)); System.out.println("60度的正切值:" + Math.tan(Math.PI/3)); System.out.println(" "); System.out.println("1/2的反正弦值: " + Math.atan(1)); System.out.println("1/2的反余弦值: " + Math.atan(1)); System.out.println("1的反正切值: " + Math.atan(1)); System.out.println("极坐标角度: " + Math.atan2(1/2,1/2)); System.out.println(" "); System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2)); System.out.println(" "); System.out.println("180度的弧度是:" + Math.toRadians(180)); } } Console: 3.141592653589793 90 度的正弦值:1.0 0度的余弦值:1.0 60度的正切值:1.7320508075688767 1/2的反正弦值: 0.7853981633974483 1/2的反余弦值: 0.7853981633974483 1的反正切值: 0.7853981633974483 极坐标角度: 0.0 π/2的角度值:90.0 180度的弧度是:3.141592653589793

四、小结

最新回复(0)