深入了解Java核心类库--Math类
作者:入错行的北北 发布时间:2023-08-19 01:06:21
标签:Java,Math类,深入了解
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大小 |
来源:https://blog.csdn.net/m0_50609545/article/details/117877134
0
投稿
猜你喜欢
- 有人问我,怎么判断一个点是不是在多边形内,本来想着把这个多边形分成一个又一个三角形,如图, 然后判断这个点是不是在某个三角形中,如
- 本文主要介绍的是通过使用java的相关类可以实现对文件或文件夹的压缩。zlib是一种数据压缩程序库,它的设计目标是处理单纯的数据(而不管数据
- 本文实例为大家分享了OpenCV实现人脸识别程序的具体代码,供大家参考,具体内容如下//Haar特征检测,人脸识别算法,是用xml作为训练后
- 起源flutter作为一个跨平台的框架,在绘制上体现出了它跨平台的良好性能.那么,它是如何从runApp()后 绘制上屏的呢?本文将与你一起
- 一、概述现在大多数的电商APP的详情页长得几乎都差不多,几乎都是上面一个商品的图片,当你滑动的时候,会有Tab悬浮在上面,这样做用户体验确实
- 在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较
- 一、先看下项目结构CodeGenerator:生成器主类resources下的mapper.java.vm:一个模板类,用以在生成dao层时
- requestFoucs();无效。requestFoucsFromTouch();无效。webview.setTouchListener;
- 字段策略 0:”忽略判断”,1:”非 NULL 判断”),2:”非空判断”问题描述:当字段策略为 0 “忽略判断” 的时候,如果实体和数据库
- 本篇给大家详细讲解了MTKAndroid平台开发流程,大致分为44个步骤,我们把每个步骤的命令详细讲解了下,一起来学习下。1.拷贝代码仓库从
- Pom依赖<parent> <groupId>org.springframework.bo
- Android版本更新实例详解1、导入xutils的jar包 2、在AndroidManifest.xml中添加权限 3、选择下载的路径,和
- 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,
- 概述在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手
- 免责声明:本教程所有资源均来源于网络;仅用于学习交流,请勿用于任何商业行为;如需要,请使用正版授权;侵权联删。推荐最新 IntelliJ I
- 摘要:vs2019新鲜出炉,配置opencv又有哪些不一样呢,这个教程将会一步一步的教你如何配置opencv和跑动opencv一个简单的项目
- 最新开发新项目的时候,要做分享项目,要求分享有微信,微信朋友圈,QQ,QQ空间,新浪微博这五个,所分享内容包括,分享纯图片,纯文字,图文类型
- 由于 Spring 拥有对象的管理权,所以我们也需要拥有较为高效的对象存储和取出的手段,下面我们来分别总结一下:存对象配置文件在存储对象之前
- 【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1
- 本文实例为大家分享了android自定义环形对比图的具体代码,供大家参考,具体内容如下1.首先在res/values里创建一个attr.xm