gpt4 book ai didi

深入了解Java核心类库--Math类

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章深入了解Java核心类库--Math类由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Java常用类库Math

类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数 。

1、Field Summary

Modifier and Type Field Description
static double E 自然对数的基数
static double PI π

2、Method Summary

2.1 常用方法

Modifier and Type Field Description
   
static double ceil​(double a) 返回≥a的最小整数
static double floor​(double a) 返回≤a的最大整数
static int round​(float a) 返回四舍五入后的值
   
static T max​(T a, T b) 返回两个数据类型为T中较大的
static T min​(T a, T b) 返回两个数据类型为T中较x小的
   
static double random() 返回[0.0,1.0)。
static double sqrt​(double a) 返回正平方根。
static T abs(T a) 返回数据类型为T的绝对值
static double pow​(double a, double b) 返回a^b
static double log​(double a) 返回基数为e的对数
static double log10​(double a) 返回基数为10的对数

2.1.1 部分方法源码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public static long round( double a) {
     long longBits = Double.doubleToRawLongBits(a);
     long biasedExp = (longBits & DoubleConsts.EXP_BIT_MASK)
             >> (DoubleConsts.SIGNIFICAND_WIDTH - 1 );
     long shift = (DoubleConsts.SIGNIFICAND_WIDTH - 2
             + DoubleConsts.EXP_BIAS) - biasedExp;
     if ((shift & - 64 ) == 0 ) { // shift >= 0 && shift < 64
         // a is a finite number such that pow(2,-64) <= ulp(a) < 1
         long r = ((longBits & DoubleConsts.SIGNIF_BIT_MASK)
                 | (DoubleConsts.SIGNIF_BIT_MASK + 1 ));
         if (longBits < 0 ) {
             r = -r;
         }
         // In the comments below each Java expression evaluates to the value
         // the corresponding mathematical expression:
         // (r) evaluates to a / ulp(a)
         // (r >> shift) evaluates to floor(a * 2)
         // ((r >> shift) + 1) evaluates to floor((a + 1/2) * 2)
         // (((r >> shift) + 1) >> 1) evaluates to floor(a + 1/2)
         return ((r >> shift) + 1 ) >> 1 ;
     } else {
         // a is either
         // - a finite number with abs(a) < exp(2,DoubleConsts.SIGNIFICAND_WIDTH-64) < 1/2
         // - a finite number with ulp(a) >= 1 and hence a is a mathematical integer
         // - an infinity or NaN
         return ( long ) a;
     }
}
public static int max( int a, int b) {
     return (a >= b) ? a : b;
}
  public static int min( int a, int b) {
     return (a <= b) ? a : b;
}
public static int abs( int a) {
     return (a < 0 ) ? -a : a;
}

2.1.2 具体实现 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Test {
     public static void main(String[] args) {
         System.out.println( "≥3.2的最小整数为:" +Math.ceil( 3.2 )); //output:4
         System.out.println( "≤3.2的最大整数为:" +Math.floor( 3.2 )); //output:3
         System.out.println( "3.2四舍五入为:" +Math.round( 3.2 )); //output:3
         System.out.println( "-1,5中较大的数为:" +Math.max(- 1 , 5 )); //output:5
         System.out.println( "-1,5中较小的数为:" +Math.min(- 1 , 5 )); //output:-1
         System.out.println( "随机产生[0,5)范围的数" +Math.random()* 5 ); //output:[0,5)中任意的随机数
         System.out.println( "25的平方根为:" +Math.sqrt( 25 )); //output:5
         System.out.println( "-9的绝对值为:" +Math.abs(- 9 )); //output:9
         System.out.println( "2^3的值为:" +Math.pow( 2 , 3 )); //output:8
         System.out.println( "以e为基数的对数为:" +Math.log( 10 ));
         System.out.println( "以10为基数的对数为:" +Math.log10( 100 )); //output:2
     }
}

2.2 算数运算

Modifier and Type Field Description
static T addExact​(T x, T y) 返回x+y,溢出则抛出异常T(int,long)
static T multiplyExact​(A x, B y) 返回x*y,结果溢出则抛出异常int(int,int),long(long,int/long)
static long multiplyFull​(int x, int y) 返回(long)x*(long)y
static T floorDiv​(A x, B y) 返回≤ x/y的最大值,y=0则抛出ArithmeticException异常,int(int,int),long(long,int/long
static T floorMod​(A x, B y) 返回floor(x%y),即x-(x/y)*y,int(int/long,int),long(long,long)

2.3 三角函数

Modifier and Type Field Description
static double sin​(double a) 返回角度的三角正弦值
static double cos​(double a) 返回角度的三角余弦值
static double tan​(double a) 返回角度的三角正切
static double asin​(double a) 返回a的反正弦值,返回的角度-pi/2~pi/2
static double acos​(double a) 返回a的反余弦值,返回的角度0.0~pi
static double atan​(double a) 返回a的反正切值,返回的角度-pi/2~pi/2

2.4 其他不常用方法

Modifier and Type Field Description
static double cosh​(double x) 返回 double值的双曲余弦值
static double cbrt​(double a) 返回 double值的多维数据集根
static double copySign​(double magnitude, double sign) 返回带有第二个浮点参数符号的第一个浮点参数
static float copySign​(float magnitude, float sign) 返回带有第二个浮点参数符号的第一个浮点参数
static int decrementExact​(int a) 返回a-1,如果结果溢出int则抛出异常
static long decrementExact​(long a) 返回a-1,如果结果溢出long则抛出异常
static double exp​(double a) 返回e^a
static double expm1​(double x) 返回 e^x - 1
static double fma​(double a, double b, double c) 返回a*b+c
static float fma​(float a, float b, float c) 返回a*b+c
static int getExponent​(double d) 返回 double表示中使用的无偏指数
static int getExponent​(float f) 返回 float表示中使用的无偏指数
static double hypot​(double x, double y) 返回sqrt( x 2 + y 2 ),没有中间溢出或下溢
static double IEEEremainder​(double f1, double f2) 根据IEEE 754标准规定,计算两个参数的余数运算
static int incrementExact​(int a) 返回以1递增的参数,如果结果溢出 int则抛出异常
static long incrementExact​(long a) 返回以1递增的参数,如果结果溢出 long则抛出异常
static double log1p​(double x) 返回参数和的总和的自然对数
static long multiplyHigh​(long x, long y) 返回 long作为两个64位因子的128位乘积的最高64位
static int negateExact​(int a) 返回参数的否定,如果结果溢出 int则抛出异常
static long negateExact​(long a) 返回参数的否定,如果结果溢出 long则抛出异常
static double nextAfter​(double start, double direction) 返回第二个参数方向上第一个参数旁边的浮点数
static float nextAfter​(float start, double direction) 返回第二个参数方向上第一个参数旁边的浮点数
static double nextDown​(double d) 返回负无穷大方向上与 d相邻的浮点值
static float nextDown​(float f) 返回负无穷大方向上与 f相邻的浮点值
static double nextUp​(double d) 返回正无穷大方向上与 d相邻的浮点值
static float nextUp​(float f) 返回正无穷大方向上与 f相邻的浮点值
static double rint​(double a) 返回与 double值最接近的 double值,该值等于数学整数
static double scalb​(double d, int scaleFactor) 返回 d ×2 scaleFactor舍入,就像通过单个正确舍入的浮点乘以双 scaleFactor值集的成员一样
static float scalb​(float f, int scaleFactor) 返回 f ×2 scaleFactor舍入,就像通过单个正确舍入的浮点乘以浮点值集的成员一样
static double signum​(double d) 返回参数的signum函数; 如果参数为零,则为零;如果参数大于零,则为1.0;如果参数小于零,则为-1.0
static float signum​(float f) 返回参数的signum函数; 如果参数为零则为零,如果参数大于零则为1.0f,如果参数小于零则为-1.0f
static double sinh​(double x) 返回 double值的双曲正弦值
static int subtractExact​(int x, int y) 返回参数的差异,如果结果溢出 int则抛出异常
static long subtractExact​(long x, long y) 返回参数的差异,如果结果溢出 long则抛出异常
static double tanh​(double x) 返回 double值的双曲正切值
static double toDegrees​(double angrad) 将以弧度测量的角度转换为以度为单位测量的近似等效角度
static int toIntExact​(long value) 返回long参数的值; 如果值溢出int则抛出异常
static double toRadians​(double angdeg) 将以度为单位测量的角度转换为以弧度为单位测量的近似等效角度
static double ulp​(double d) 返回参数的ulp大小
static float ulp​(float f) 返回参数的ulp大小

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我的更多内容.

原文链接:https://blog.csdn.net/m0_50609545/article/details/117877134 。

最后此篇关于深入了解Java核心类库--Math类的文章就讲到这里了,如果你想了解更多关于深入了解Java核心类库--Math类的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com