返回顶部
首页 > 资讯 > 后端开发 > Python >深入了解Java核心类库--Math类
  • 717
分享到

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

2024-04-02 19:04:59 717人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录Java常用类库Math一、Field Summary二、Method Summary2.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大小

总结

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

--结束END--

本文标题: 深入了解Java核心类库--Math类

本文链接: https://lsjlt.com/news/131430.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 深入了解Java核心类库--Math类
    目录Java常用类库Math一、Field Summary二、Method Summary2.1 常用方法2.1.1 部分方法源码2.2 算数运算2.3 三角函数2.4 其他不常用方...
    99+
    2024-04-02
  • 深入了解Java核心类库--Objects类
    目录1 Objects1.1 Objects方法1.2 Objects常用方法1.2.1 equals(Object a, Object b)1.2.2 isNull(Object ...
    99+
    2024-04-02
  • 深入了解Java核心类库--Arrays类
    目录Java常用类库Arrays一、常用方法1.1 toString1.2 Sort1.2.1 sort​(T[] a, int fromIndex, int toInd...
    99+
    2024-04-02
  • 深入了解Java核心类库--String类
    目录一、 简介零碎知识点字符串常量池堆在逻辑上的划分二、 创建对象2.1.1 直接引用常量区2.1.2 使用构造方法2.1.3 两种实例化方法的区别三、常用方法总结一、 简介 零碎知...
    99+
    2024-04-02
  • 深入了解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 下...
    99+
    2024-04-02
  • 深入了解Java核心类库--BigDecimal和System类
    目录BigDecimal 类一、 概述常用字段常用构造方法常用方法System类三个成员变量arraycopy​(Object src, int srcPos, Obje...
    99+
    2024-04-02
  • 深入了解Java核心类库--Date,Calendar,DateFormat类
    目录一、Date1.1 构造方法1.1.1 Date()1.1.2 Date(long date)1.2 常用方法1.3 其他方法二、Calendar(抽象)2.1 获取时间 get...
    99+
    2024-04-02
  • 深入理解Netty核心类及其作用
    目录MessageToByteEncoderByteToMessageDecoderReplayingDecoderMessageToMessageEncoderMessageToM...
    99+
    2023-05-17
    Netty核心类 Netty核心组件
  • 深入了解numpy库的核心特性和优势
    深入了解numpy库的核心特性和优势,需要具体代码示例 python是一种开源的高级编程语言,numpy是python的一个重要的扩展库。numpy是Numerical Python的缩写,它提供了一个强大的多维数组对象以及相应...
    99+
    2024-01-19
    Numpy 优势 核心特性
  • java math类如何导入
    要导入Java的Math类,可以使用以下代码:```javaimport java.lang.Math;```或者,可以使用以下代码...
    99+
    2023-09-23
    java
  • 深入了解Java I/O 之File类
    目录File类创建File文件File文件基本操作总结File类 Java使用File类来表示计算机系统磁盘文件的对象类型。File类中提供了大量的方法,可以对文件进行增加、修改、删...
    99+
    2024-04-02
  • Java核心类库BigDecimal和System的介绍
    这篇文章主要介绍“Java核心类库BigDecimal和System的介绍”,在日常操作中,相信很多人在Java核心类库BigDecimal和System的介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”J...
    99+
    2023-06-20
  • 深入了解织梦CMS的核心功能
    织梦CMS(Discuz!)作为一款开源的论坛系统,在网站建设领域占据了重要地位。它提供了丰富的功能和灵活的定制选项,让网站管理员能够轻松建立和管理论坛社区。在本文中,我们将深入了解织...
    99+
    2024-04-02
  • 深入了解Java内部类的用法
    目录1.内部类分类和概念2.局部内部类3.匿名内部类(重要)基于接口的匿名内部类基于类的匿名内部类一些细节匿名内部类的最佳实践4.成员内部类5.静态内部类1.内部类分类和概念 jav...
    99+
    2024-04-02
  • 深入理解JAVA基础类库中对象Object类
    引言 Object类是所有类、数组的父类,位于java.lang 包下也就是说,Java允许把所有任何类型的对象赋给Object类型的变量。当定义一个类时没有使用extends关键字...
    99+
    2024-04-02
  • Java 超详细讲解核心类Spring JdbcTemplate
    目录JdbcTemplate概述JdbcTemplate开发步骤JdbcTemplate快速入门Spring产生JdbcTemplate对象JdbcTemplate的常用操作修改操作...
    99+
    2024-04-02
  • Java核心类库Arrays的常用方法介绍
    本篇内容主要讲解“Java核心类库Arrays的常用方法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java核心类库Arrays的常用方法介绍”吧!目录Java常用类库Arrays一、常用...
    99+
    2023-06-20
  • SpringIOC与DI核心深入理解
    目录深入理解IOC思想DI&IOC深入理解IOC思想 spring本质就在于将对象全部交由给spring容器创建和管理,由容器控制对象的整个生命周期、核心就是IOC控制反转和...
    99+
    2023-02-20
    Spring IOC与DI Spring DI Spring IOC
  • Java Object类和包装类深入解读
    目录查看源代码方法Object类定义及应用1. toString()2. equals( )包装类定义及应用装箱和拆箱自己实现包装类通过包装类让Object类接收基本数据类型包装类的...
    99+
    2024-04-02
  • 深入了解JavaObject类的使用
    目录1.equals方法==运算符equals2.hashCode3.toString4.finalize1.equals方法 ==运算符 比较运算符,即可以判断基本类型又可以判断引...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作