Java的Math接口
1.Math类
1.1概述
Math类所在的包为java.lang包,因此在使用的时候不需要导包。并且Math类被final修饰了,因此该类是不能被继承的。Math类包含执行基本数学运算的方法,我们可以使用Math类完成基本的数学运算。
Math类中包含了两种类成员,一种为e,即自然对数的底数。另一种为PI,即圆周率的Π。
对于Math类,主要需要掌握以下常用方法
public static int abs(int a); //返回参数的绝对值;
public static double ceil(double a);//返回大于或等于参数的最小整数。
public static double floor(double a);//返回小于或等于参数的最大整数.
public static int round(float); //按照四舍五入返回最接近参数的int类型。
public static int max(int a,int b);//返回两个int值中的较大值。
public static int min(int a,int b);//返回两个int值中的较小值.
public static double pow(double a,double b);//计算a的b次幂的值.
public static double random(); //返回一个【0.0,1.0)的随机值
public static double sqrt(double a); //返回一个double类型的开平方数
代码演示示例
System.out.println("98的绝对值为"+Math.abs(98));
System.out.println("-98的绝对值为"+Math.abs(-98));
//向上取整
System.out.println(Math.ceil(12.45));
System.out.println(Math.ceil((-12.45)));
//向下取整
System.out.println(Math.floor(12.45));
System.out.println(Math.floor(-12.45));
//四舍五入
System.out.println(Math.round(12.45));
System.out.println(Math.round(-12.45));
System.out.println(Math.max(15, 30));
System.out.println(Math.min(15,30));
System.out.println(Math.pow(2,4));
System.out.println(Math.random()*100+1);//随机生成一个1-100之间的数。
System.out.println(Math.sqrt(4));
代码结果如下
98的绝对值为98
-98的绝对值为98
13.0
-12.0
12.0
-13.0
12
-12
30
15
16.0
60.04682115156065
2.0
Process finished with exit code 0
1.2Math练习题
要求:判断一个数是否为质数
public class Test {
public static void main(String[] args) {
//判断一个数是否为质数.
//质数是除了它和1以为,不能被任意一个数整除。
System.out.println(isPrime(997));
}
public static boolean isPrime(int a) {
int count=0;
for (int i = 2; i <Math.sqrt(a) ; i++) {
if(a%i==0){
return false;
}
}
return true;
}
}
要求:自幂数,一个n位自然数等于自身各个数位上数字的n次幂之和
public class Test {
public static void main(String[] args) {
//要求:统计n位自然数等于自身各个数位上数字的n次幂之和
int count=0;
for (int i = 100; i <1000 ; i++) {
int ge=i%10;
int shi=i/10%10;
int bai=i/100%10;
if(Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3)==i){
count++;
System.out.println(i);
}
}
System.out.println(count);
}
}
要求:证明没有两位的自幂数
public class Test {
public static void main(String[] args) {
//要求:证明没有两位的自幂数
int count=0;
for (int i = 10; i <100 ; i++) {
int ge =i%10;
int shi=i/10%10;
if(Math.pow(ge,2)+Math.pow(shi,2)==i)
count++;
}
System.out.println(count);//输出结果为0
}
}
要求:分别统计有多少个四叶玫瑰数和五角星数
public class Test {
public static void main(String[] args) {
//要求:统计四叶玫瑰数
int count=0;
for (int i = 1000; i <10000 ; i++) {
int ge =i%10;
int shi=i/10%10;
int bai=i/100%10;
int qian=i/1000%10;
if(Math.pow(ge,4)+Math.pow(shi,4)+Math.pow(bai,4)+Math.pow(qian,4)==i)
count++;
}
System.out.println(count);//结果为3个
}
}
public class Test {
public static void main(String[] args) {
//要求:统计五角星数
int count=0;
for (int i = 10000; i <100000 ; i++) {
int ge =i%10;
int shi=i/10%10;
int bai=i/100%10;
int qian=i/1000%10;
int wan=i/10000%10;
if(Math.pow(ge,5)+Math.pow(shi,5)+Math.pow(bai,5)+Math.pow(qian,5)+Math.pow(wan,5)==i)
count++;
}
System.out.println(count);//结果为3
}
}