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

目录
  • Java常用类库Math
    • 一、Field Summary
    • 二、Method Summary
      • 2.1 常用方法
      • 2.1.1 部分方法源码
      • 2.2 算数运算
      • 2.3 三角函数
      • 2.4 其他不常用方法
  • 总结

Java常用类库Math

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

一、Field Summary

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

二、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 部分方法源码

	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 具体实现

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大小

总结

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

(0)

相关推荐

  • Java中Math类常用方法代码详解

    近期用到四舍五入想到以前整理了一点,就顺便重新整理好经常见到的一些四舍五入,后续遇到常用也会直接在这篇文章更新... public class Demo{ public static void main(String args[]){ /** *Math.sqrt()//计算平方根 *Math.cbrt()//计算立方根 *Math.pow(a, b)//计算a的b次方 *Math.max( , );//计算最大值 *Math.min( , );//计算最小值 */ System.out.pri

  • JAVA如何使用Math类操作数据

    Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round(); 常用的方法: 通过案例我们来认识一下他们的使用吧!! 运行结果: PS: Math 类还提供了许多其他方法,各位小伙伴们可以注意关注 wiki ,查阅更多信息 示例: 定义一个包含 10 个元素的整型数组,通过随机产生 10 以内的随机数,给数组中的每个元素赋值,并输出结果 输出: 6 0 6 3 2

  • Java Math类的三个方法ceil,floor,round用法

    Math类的ceil,floor,round用法 ceil()方法 就表示向上取整,Math.ceil(12.3)的结果是13,Math.ceil(-12.7)的结果-12: floor()方法 就表示向下取整,Math.floor(12.7)的结果是12,Math.floor(-12.3)的结果-13: round()方法 表示"四舍五入",Math.round(12.3)的结果是12,Math.round(-12.7)的结果-13: Math的 floor,round和ceil总结

  • Java中Arrays类与Math类详解

    Arrays(数组工具类) Java中已经封装好的类,提供大量静态方法供用户对数组的使用. 导包:import java.util.Arrays 1.Arrays.toString(数组) //返回值是一个[]括起来的字符串,将数组中的元素放入[]中 int[] arr=new int[]{1,2,3,4}; String str=Arrays.toString(arr); System.out.println(str); -------------------------------- [1,

  • Java Math类、Random类、System类及BigDecimal类用法示例

    本文实例讲述了Java Math类.Random类.System类及BigDecimal类用法.分享给大家供大家参考,具体如下: Math类 Math的方法 package cn.itcast_01; /* * Math:用于数学运算的类. * 成员变量: * public static final double PI * public static final double E * 成员方法: * public static int abs(int a):绝对值 * public static

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

    目录 Java常用类库Math 一.Field Summary 二.Method Summary 2.1 常用方法 2.1.1 部分方法源码 2.2 算数运算 2.3 三角函数 2.4 其他不常用方法 总结 Java常用类库Math 类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数 一.Field Summary Modifier and Type Field Description static double E 自然对数的基数 static double PI

  • 深入了解Java核心类库--Arrays类

    目录 Java常用类库Arrays 一.常用方法 1.1 toString 1.2 Sort 1.2.1 sort​(T[] a, int fromIndex, int toIndex) 1.2.2 Sort(T[] a) 1.2.3 其它 1.3 copyOf 1.4 mismatch 1.5 binarySearch 1.5.1 binarySearch​(T[] a, int fromIndex, int toIndex, T key) 1.5.2 binarySearch​(T[] a,

  • 深入了解Java核心类库--Objects类

    目录 1 Objects 1.1 Objects方法 1.2 Objects常用方法 1.2.1 equals(Object a, Object b) 1.2.2 isNull(Object obj) 1.2.3 nonNull(Object obj) 1.2.4 requireNonNull(T obj) 1.3 Objects源码 2 区别于Object 2.1 Object构造方法 2.2 Object其他方法 2.2.1 equals(Object obj) 2.2.2 toString

  • 深入了解Java核心类库--String类

    目录 一. 简介 零碎知识点 字符串常量池 堆在逻辑上的划分 二. 创建对象 2.1.1 直接引用常量区 2.1.2 使用构造方法 2.1.3 两种实例化方法的区别 三.常用方法 总结 一. 简介 零碎知识点 extends Object implements serializable,Comparable< String >,charSequence String类表示字符串,所有字符串文字都是此类的对象 字符串是不变的,值在创建后无法更改 对象一旦声明则不可改变,改变的只是地址,原来的字符

  • 深入了解Java核心类库--BigDecimal和System类

    目录 BigDecimal 类 一. 概述 常用字段 常用构造方法 常用方法 System类 三个成员变量 arraycopy​(Object src, int srcPos, Object dest, int destPos, int length) 总结 BigDecimal 类 一. 概述 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算. 开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作. BigDec

  • 深入了解Java核心类库--Date,Calendar,DateFormat类

    目录 一.Date 1.1 构造方法 1.1.1 Date() 1.1.2 Date(long date) 1.2 常用方法 1.3 其他方法 二.Calendar(抽象) 2.1 获取时间 get() 2.2 设置时间 2.3 时间计算 2.4 其它方法 三.DateFormat(抽象) 3.1 构造方法 总结 一.Date Date类表示特定的时刻,精度为毫秒 Date的两个附加功能:Calendar.DateFormat Calendar类应该用于在日期和时间字段之间进行转换 DateFo

  • 深入了解Java核心类库--泛型类

    目录 1.1 泛型的使用 1.1.1 泛型类 1.1.2 泛型接口 1.1.3 泛型方法 1.1.4 tips 1.2 泛型限制类型 1.3 通配符? 1.3.1 上界限定 1.3.2 下届限定 1.3.3 无限制 1.4 泛型的作用 总结 1.1 泛型的使用 泛型:参数化模型(不确定,后续使用时指定类型) 1.1.1 泛型类 1.1.2 泛型接口 实现接口时,可以选择或不选择指定泛型类型 public interface IntercaceName<T>{ T getData(); } ①指

  • java类加载器和类反射使用示例

    一.一个命令对应一个进程. 当我们启动一个Java程序,即启动一个main方法时,都将启动一个Java虚拟机进程,不管这个进程有多么复杂.而不同的JVM进程之间是不会相互影响的.这也就是为什么说,Java程序只有一个入口--main方法,让虚拟机调用.而两个mian方法,对应的是2个JVM进程,启动的是两个不同的类加载器,操作的实际上是不同的类.故而不会互相影响. 二.类加载. 当我们使用一个类,如果这个类还未加载到内存中,系统会通过加载.连接.初始化对类进行初始化. 1.类加载:指的是将类的c

  • 浅谈java中math类中三种取整函数的区别

    math类中三大取整函数 1.ceil 2.floor 3.round 其实三种取整函数挺简单的.只要记住三个函数名翻译过来的汉语便能轻松理解三大函数,下面一一介绍 1.ceil,意思是天花板,java中叫做向上取整,大于等于该数字的最接近的整数 例: math.ceil(13.2)=14 math.ceil(-13.2)=-13 2.floor,意思是地板,java中叫做向下取整,小于等于该数字的最接近的整数 例: math.floor(13.2)=13 math.floor(-13.2)=-

随机推荐