Java Math类是Java标准库中的一个数学计算类,可以为我们在算法应用中提供很大的帮助。
且由于Math类中的方法都是静态的,因此可以直接通过类名调用,而不需要创建Math类的实例。使用起来十分便捷,下面列出Math中各函数、常量的使用方法。
目录
得到自然对数的底数,如
System.out.println(Math.E);
//输出:2.718281828459045
得到圆周率,如
System.out.println(Math.PI);
//输出:3.141592653589793
返回x的绝对值。
参数x,可以是任意数学类型。如
int a = -3;
double b = -2.0;
System.out.println("a的绝对值:" + Math.abs(a) + ",b的绝对值:" + Math.abs(b));
//输出:a的绝对值:3,b的绝对值:2.0
返回x和y中的最大值
注意此时会有java的类型转换规则,即若x,y中有类型不一致,那么会返回其中较高的类型。
如
int a = -3;
int b = 2;
System.out.println("最大值为"+Math.max(a,b));
//输出:最大值为2
int c = 4;
double d = 2.0;
System.out.println("最大值为"+Math.max(c,d));
//输出:最大值为4.0
返回x和y中的最小值
类型转换规则和Math.max()同理,如
int a = -3;
int b = 2;
System.out.println("最小值为"+Math.min(a,b));
//输出:最小值为-3
int c = -4;
double d = 2.0;
System.out.println("最小值为"+Math.min(c,d));
//输出:最小值为-4.0
返回x^y的double形式,函数的原型为
public static double pow(double x, double y)
其中x和y都是double类型的参数。这意味着参数可以是整数或小数,没有特定的要求。
函数将返回x的y次幂,结果一定是double类型的。
如果要得到int型,要自己转换。如
System.out.println(Math.pow(6,2));
//输出:36.0
System.out.println((int)Math.pow(6,2));
//输出:36
返回根号x,即x的平方根
函数的原型为
public static double sqrt(double x)
会返回double类型的结果,因此操作和Math.pow()同理。如
System.out.println(Math.sqrt(16));
//输出:4.0
System.out.println((int)Math.sqrt(16));
//输出:4
1. floor直接取其含义,也就是“地板”,地板在脚下,即向下取整。
2. ceil是ceiling的缩写,也就是“天花板”,天花板在头顶上,即向上取整。
这里需要注意,floor()和ceil()的返回值都是double类型的数值。
System.out.println(Math.ceil(4.5));
//输出:5.0
System.out.println(Math.floor(4.5));
//输出4.0
若要得到int型,跟前边一样类型转换就ok了。
对四舍五入取整
round()的四舍五入也可以引入y轴来确定:
不管正数还是负数,四舍五入法要求,凡是.5的小数,都要向上取整。
因此,负数.5小数的四舍五入,只需直接取绝对值,再加上负号,就完成了。如
System.out.println(Math.round(4.5));
//输出:5
System.out.println(Math.round(-4.6));
//输出:-5
System.out.println(Math.round(-4.5));
//输出:-4
?实际例子比较
参数 | Math.floor | Math.round | Math.ceil |
---|---|---|---|
4.4 | 4 | 4 | 5 |
4.5 | 4 | 5 | 5 |
4.6 | 4 | 5 | 5 |
-4.4 | -5 | -4 | -5 |
-4.5 | -5 | -4 | -5 |
-4.6 | -5 | -5 | -5 |
返回一个数的正弦值,原型为
public static double sin(double a)
结果也是double类型,如
System.out.println(Math.sin(Math.PI/2));
//输出:1.0
返回一个数的余弦值,原型为
public static double cos(double a)
结果也是double类型,如
System.out.println(Math.cos(Math.PI));
//输出:-1.0
返回一个数的正切值,原型为
public static double tan(double a)
结果也是double类型,如
System.out.println(Math.tan(Math.PI/2));
//输出:1.633123935319537E16
返回一个数的自然对数(以e为底的对数),原型为
public static double log(double x)
结果也是double类型,如
System.out.println(Math.log(Math.E));
//输出:1.0
返回e^x,原型为
public static double exp(double a)
因此x可以是任意类型,如
System.out.println(Math.exp(2.2));
//输出:9.025013499434122