8.4 Math类
java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。如果需要更加强大的数学运算能力,计算高等数学中的相关内容,可以使用apache commons下面的Math类库。
Math类的常用方法:
abs 绝对值
acos,asin,atan,cos,sin,tan 三角函数
sqrt 平方根
pow(double a, double b) a的b次幂
max(double a, double b) 取大值
min(double a, double b) 取小值
ceil(double a) 大于a的最小整数
floor(double a) 小于a的最大整数
random() 返回 0.0 到 1.0 的随机数
long round(double a) double型的数据a转换为long型(四舍五入)
toDegrees(double angrad) 弧度->角度
toRadians(double angdeg) 角度->弧度
【示例8-19】Math类的常用方法
public class TestMath {
public static void main(String[] args) {
// 取整相关操作
System.out.println(Math.ceil(3.2));
System.out.println(Math.floor(3.2));
System.out.println(Math.round(3.2));
System.out.println(Math.round(3.8));
// 绝对值、开方、a的b次幂等操作
System.out.println(Math.abs(-45));
System.out.println(Math.sqrt(64));
System.out.println(Math.pow(5, 2));
System.out.println(Math.pow(2, 5));
// Math类中常用的常量
System.out.println(Math.PI);
System.out.println(Math.E);
// 随机数
System.out.println(Math.random());// [0,1)
}
}
执行结果如图8-20所示:
图8-20 示例8-19运行效果图
Math类中虽然为我们提供了产生随机数的方法Math.random(),但是通常我们需要的随机数范围并不是[0, 1)之间的double类型的数据,这就需要对其进行一些复杂的运算。如果使用Math.random()计算过于复杂的话,我们可以使用例外一种方式得到随机数,即Random类,这个类是专门用来生成随机数的,并且Math.random()底层调用的就是Random的nextDouble()方法。
【示例8-20】Random类的常用方法
import java.util.Random;
public class TestRandom {
public static void main(String[] args) {
Random rand = new Random();
// 随机生成[0,1)之间的double类型的数据
System.out.println(rand.nextDouble());
// 随机生成int类型允许范围之内的整型数据
System.out.println(rand.nextInt());
// 随机生成[0,1)之间的float类型的数据
System.out.println(rand.nextFloat());
// 随机生成false或者true
System.out.println(rand.nextBoolean());
// 随机生成[0,10)之间的int类型的数据
System.out.print(rand.nextInt(10));
// 随机生成[20,30)之间的int类型的数据
System.out.print(20 + rand.nextInt(10));
// 随机生成[20,30)之间的int类型的数据(此种方法计算较为复杂)
System.out.print(20 + (int) (rand.nextDouble() * 10));
}
}
执行结果如图8-21所示:
图8-21 示例8-20运行效果图
注意
Random类位于java.util包下。