点击左上角【目录】
简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节。
有问题可加入安卓QQ群: 246231638
在高数中总会运用到各种类型的计算,如正弦、余弦、正切、π、反正切、底数e的参数次方等等,那这些在计算机中如何表述?当然,可以用数值类型(如int、double、float)去模拟所有方法的实现,但是这样等同于解一个方程式的值,痛苦不堪,其实在Java中已经帮我们封装好了这些函数的调用,就是这个Math 类,先来看看其API有哪些方法可以给我们玩的。
API方法
来看下下面的API方法,为了方便查看我备注了中文说明。
S.N. | 方法 & 描述 |
---|---|
1 | static double abs(double a) 此方法返回一个double值的绝对值. |
2 | static float abs(float a) 此方法返回一个float值的绝对值. |
3 | static int abs(int a) 此方法返回一个int值的绝对值. |
4 | static long abs(long a) 此方法返回一个long值的绝对值. |
5 | static double acos(double a) 此方法返回一个值的反余弦值,返回的角度范围从0.0到pi. |
6 | static double asin(double a) 此方法返回一个值的反正弦,返回的角度范围在-pi/2到pi/2. |
7 | static double atan(double a) 此方法返回一个值的反正切值,返回的角度范围在-pi/2到pi/2. |
8 | static double atan2(double y, double x) 此方法返回角度theta(x,y)从转换的矩形坐标到极坐标(r,θ). |
9 | static double cbrt(double a) 此方法返回一个double值的立方根. |
10 | static double ceil(double a) 此方法返回最小的(最接近负无穷大)double值,大于或等于参数,并等于一个整数. |
11 | static double copySign(double magnitude, double sign) 此方法返回的第一个浮点参数与第二个浮点参数的符号. |
12 | static float copySign(float magnitude, float sign) 此方法返回的第一个浮点参数与第二个浮点参数的符号. |
13 | static double cos(double a) 此方法返回一个角的三角余弦. |
14 | static double cosh(double x) 此方法返回一个double值的双曲余弦. |
15 | static double exp(double a) 此方法返回欧拉数e的一个double值的次幂. |
16 | static double expm1(double x) 此方法返回 ex -1. |
17 | static double floor(double a)此方法返回最大的(最接近正无穷大)double值小于或相等于参数,并相等于一个整数. |
18 | static int getExponent(double d) 此方法返回的无偏指数在该项表述的double. |
19 | static int getExponent(float f) 此方法返回一个浮点数的表示中使用的无偏指数. |
20 | static double hypot(double x, double y) 没有中间溢出或下溢的情况下,此方法返回的sqrt(x2 +y2) . |
21 | static double IEEEremainder(double f1, double f2) 这两个参数,IEEE 754标准规定的方法计算,其余操作. |
22 | static double log(double a)此方法返回一个double值的自然对数(以e为底). |
23 | static double log10(double a) 此方法返回一个double值以10为底. |
24 | static double log1p(double x) 此方法返回自然对数的总和的参数. |
25 | static double max(double a, double b) 此方法返回两个double值较大的那一个. |
26 | static float max(float a, float b) 此方法返回的两个浮点值最大的那一个. |
27 | static int max(int a, int b) 此方法返回两个int值中最大的那一个. |
28 | static long max(long a, long b) 此方法返回的两个long值中最大的那一个. |
29 | static double min(double a, double b)此方法返回的两个较小的double值. |
30 | static float min(float a, float b) 此方法返回的两个较小的浮动值. |
31 | static int min(int a, int b) 此方法返回的两个较小的int值. |
32 | static long min(long a, long b) 此方法返回的两个较小的长值. |
33 | static double nextAfter(double start, double direction)此方法返回浮点数相邻方向的第二个参数,第一个参数. |
34 | static float nextAfter(float start, double direction) 此方法返回浮点数相邻方向的第二个参数,第一个参数. |
35 | static double nextUp(double d) 在正无穷大的方向,此方法返回至d相邻的浮点值. |
36 | static float nextUp(float f) 此方法返回到f相邻的浮点值在正无穷方向上. |
37 | static double pow(double a, double b)此方法返回的第一个参数的值提升到第二个参数的幂 |
38 | static double random() 该方法返回一个无符号的double值,大于或等于0.0且小于1.0. |
39 | static double rint(double a) 此方法返回的double值,值的参数是最接近的,相等于一个整数. |
40 | static long round(double a) 此方法返回的参数最接近的long. |
41 | static int round(float a) 此方法返回的参数最接近的整数. |
42 | static double scalb(double d, int scaleFactor) 此方法返回d × 2scaleFactor 四舍五入,如果由一个单一的正确舍入的浮点乘法的double值组的成员. |
43 | static float scalb(float f, int scaleFactor) 此方法返回f × 2scaleFactor 四舍五入,如果由一个单一的正确舍入的浮点乘法,浮点值集合的成员. |
44 | static double signum(double d) 此方法返回signum函数的参数,如果参数是零返回0,如果参数大于零返回1.0,如果参数小于零返回-1.0. |
45 | static float signum(float f) 此方法返回signum函数的参数,如果参数是零返回0,如果参数大于零返回1.0f,如果参数小于零返回-1.0f. |
46 | static double sin(double a) 此方法返回一个double值的双曲正弦. |
47 | static double sinh(double x) 此方法返回一个double值的双曲正弦. |
48 | static double sqrt(double a) 此方法返回正确舍入的一个double值的正平方根. |
49 | static double tan(double a) 此方法返回一个角的三角函数正切值 |
50 | static double tanh(double x) 此方法返回一个double值的双曲正切. |
51 | static double toDegrees(double angrad) 这种方法大致相等的角度,以度为单位的角度转换成弧度测量. |
52 | static double toRadians(double angdeg) 此方法转换一个角度,以度为单位大致相等的角弧度测量. |
53 | static double ulp(double d) 此方法返回的参数的ulp的大小. |
54 | static double ulp(float f) 此方法返回的参数的ulp的大小. |
相关函数的使用
※ . 可以看得出来,API还是挺强大的,我们想要的都有在里面。
来看下我总结的Math类 ↓
M类:Math 类
包名:Java.lang.Math
作用:包含的方法进行基本的数字操作,如基本的指数,对数,平方根、四舍五入、三角函数等等……
调用:Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用
※ . 那如何使用?可以看到,它是个静态类,那么我们可以直接用类名点的方式调取它,先看个例子 ↓
public class TestIMMQY {
public static void main (String []args)
{
System.out.println("测试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));
System.out.println("π:"+Math.PI);
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
System.out.println("两个之中的最大值"+Math.max(100.15,100.25));
}
}
控制台输出结果:
测试Math类
90 度的正弦值:1.0
0度的余弦值:1.0
60度的正切值:1.7320508075688767
1的反正切值: 0.7853981633974483
π:3.141592653589793
π/2的角度值:90.0
两个之中的最大值100.25
随机函数
※ . 当然,有个函数是我们常常使用到的,那就是随机数,我们在API中可以看到,Random方法是产生随机数字,那么我们来测试下,这里我们用个for循环打印5次看看结果
for (int i = 0; i < 5; i++) {
System.out.println("->"+Math.random());
}
控制台输出的结果:
->0.28416240369629464
->0.7486394990609012
->0.20984167308126322
->0.37751025923559334
->0.4962734671679535
可以看出,该方法返回的是一个无符号的double值,大于或等于0.0且小于1.0.
所以,我们只需要让它乘以100以后,转换成int类型,则会输出100以内的整数。
for (int i = 0; i < 5; i++) {
System.out.println("->"+(int)(Math.random()*100));
}
控制台输出结果:
->27
->3
->3
->25
->87
取整函数
那除了随机数、高数用到的相关函数之外,取整函数也是比较常用的。
主要分为三大类:
- ceil
- floor
- round
- ceil,意思是天花板,java中叫做向上取整,大于等于该数字的最接近的整数
math.ceil(13.2)=14
math.ceil(-13.2)=-13
- floor,意思是地板,java中叫做向下取整,小于等于该数字的最接近的整数
math.floor(13.2)=13
math.floor(-13.2)=-14
- round,最特殊,其实就是四舍五入
math.round(13.2)=13;math.round(13.5)=14
math.round(-13.2)=-13,math.round(-13.5)=-13
总结
Math类主要是辅助数字运算的一个类,与 StrictMath 类的某些数学方法不同,并非 Math 类所有等价函数的实现都定义为返回逐位相同的结果。此类在不需要严格重复的地方可以得到更好的执行,像我们初中常写的函数都是可以用得上的,如开方,三角函数之类,几乎都是可以用得上的,最后上一小段代码自己感受下。
Math.sqrt 求开方
Math.pow 求某数的任意次方, 抛出ArithmeticException处理溢出异常
Math.sqrt(x):平方根
Math.pow(x,y):x的y次方
//……
java.math.BigInteger(大整数):
BigInteger bi1=new BigInteger("1234567890123456890");
BigInteger bi2=BigInteger.valueOf(123L);
bi1=bi1.add(bi2);//b1+b2
bi1=bi1.multiply(bi2);//b1*b2
bi1=bi1.subtract(bi2);//b1-b2
bi1=bi1.divide(bi2);// b1/b2
java.math.BigDecimal(大浮点数):
BigDecimal bd = new BigDecimal("3.1415926");
bd = bd.setScale(2,BigDecimal.ROUND_DOWN);//取3.1415926小数点后面二位
如果前面的基础没看的可以点击 《JAVA 入坑教程系列》
|| 版权声明:本文为博主杜锦阳原创文章,转载请注明出处。