- java.lang.Object
-
- java.lang.StrictMath
-
public final class StrictMath extends Object
类StrictMath
包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。为了确保Java程序的可移植性,该包中某些数字函数的定义要求它们产生与某些已发布算法相同的结果。 这些算法可从众所周知的网络库
netlib
作为包“Freely Distributable Math Library”,fdlibm
。 这些以C编程语言编写的算法然后被理解为遵循Java浮点运算规则的所有浮点运算来执行。Java数学库是针对
fdlibm
版本5.3定义的。 其中fdlibm
为一个功能提供了多个定义(如acos
),请使用“IEEE 754核心功能”版本(驻留在名称以字母e
开头的文件中)。 这需要方法fdlibm
语义是sin
,cos
,tan
,asin
,acos
,atan
,exp
,log
,log10
,cbrt
,atan2
,pow
,sinh
,cosh
,tanh
,hypot
,expm1
,并log1p
。该平台使用带有int和long基元类型的带符号二进制补码整数运算。 开发人员应该选择原始类型,以确保算术运算始终产生正确的结果,这在某些情况下意味着操作不会溢出计算值的范围。 最佳做法是选择原始类型和算法以避免溢出。 在情况下,大小为
int
或者long
,需要检测溢出错误,方法addExact
,subtractExact
,multiplyExact
,并toIntExact
抛出ArithmeticException
当结果溢出。 对于其他算术运算,如除法,绝对值,递增1,递减1,否定溢出仅在特定的最小值或最大值发生,并且应根据最小值或最大值进行检查。- 从以下版本开始:
- 1.3
-
-
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 static double
abs(double a)
返回值为double
绝对值。static float
abs(float a)
返回值为float
绝对值。static int
abs(int a)
返回值为int
绝对值。static long
abs(long a)
返回值为long
绝对值。static double
acos(double a)
返回值的反余弦值; 返回的角度在0.0到pi的范围内。static int
addExact(int x, int y)
返回其参数的总和,如果结果溢出一个int
,则抛出异常。static long
addExact(long x, long y)
返回其参数的总和,如果结果溢出一个long
,则抛出异常。static double
asin(double a)
返回值的正弦值; 返回角度在pi / 2到pi / 2的范围内。static double
atan(double a)
返回值的反正切值; 返回角度在pi / 2到pi / 2的范围内。static double
atan2(double y, double x)
返回从直角坐标(转换角度 thetax
,y
)为极坐标 (R,θ-)。static double
cbrt(double a)
返回double
值的多维数据集根。static double
ceil(double a)
返回最小的(最接近负无穷大)double
值,该值大于或等于该参数,并等于某个整数。static double
copySign(double magnitude, double sign)
使用第二个浮点参数的符号返回第一个浮点参数。static float
copySign(float magnitude, float sign)
使用第二个浮点参数的符号返回第一个浮点参数。static double
cos(double a)
返回角度的三角余弦。static double
cosh(double x)
返回double
值的双曲余弦值。static double
exp(double a)
返回欧拉的数字 e提高到double
价值。static double
expm1(double x)
返回 e x -1。static double
floor(double a)
返回小于或等于参数的最大(最接近正无穷大)的double
值,并且等于数学整数。static int
floorDiv(int x, int y)
返回小于或等于代数商的最大(最接近正无穷大)int
值。static long
floorDiv(long x, int y)
返回小于或等于代数商的最大(最接近正无穷大)的数值long
。static long
floorDiv(long x, long y)
返回小于或等于代数商的最大(最接近正无穷大)long
值。static int
floorMod(int x, int y)
返回int
参数的底模数。static int
floorMod(long x, int y)
返回long
和int
参数的底模。static long
floorMod(long x, long y)
返回long
参数的底模数。static double
fma(double a, double b, double c)
返回三个参数的融合乘法加法; 也就是说,返回与第三个参数求和的前两个参数的确切乘积,然后舍入一次到最接近的double
。static float
fma(float a, float b, float c)
返回三个参数的融合乘法加法; 也就是说,返回与第三个参数相加的前两个参数的确切乘积,然后舍入一次到最接近的float
。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 double
log(double a)
返回double
值的自然对数(基数 e )。static double
log10(double a)
返回double
值的基数10对数。static double
log1p(double x)
返回参数和1的和的自然对数。static double
max(double a, double b)
返回两个double
值中的较大值。static float
max(float a, float b)
返回两个float
值中的较大值。static int
max(int a, int b)
返回两个int
中的较大值。static long
max(long a, long b)
返回两个long
中的较大值。static double
min(double a, double b)
返回两个double
中的较小值。static float
min(float a, float b)
返回两个float
中的较小值。static int
min(int a, int b)
返回两个int
中的较小值。static long
min(long a, long b)
返回两个long
中的较小值。static int
multiplyExact(int x, int y)
返回参数的乘积,如果结果溢出一个int
,则抛出异常。static long
multiplyExact(long x, int y)
返回参数的乘积,如果结果溢出一个long
,则抛出异常。static long
multiplyExact(long x, long y)
返回参数的乘积,如果结果溢出一个long
,则抛出异常。static long
multiplyFull(int x, int y)
返回参数的确切数学积。static long
multiplyHigh(long x, long y)
作为long
返回的两个64位因子的128位乘积中最显着的64位。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
pow(double a, double b)
将第一个参数的值返回到第二个参数的幂。static double
random()
返回值为double
的正值,大于等于0.0
,小于1.0
。static double
rint(double a)
返回值与参数最接近的值为double
,并且等于数学整数。static long
round(double a)
返回参数中最接近的long
,其中long
四舍五入为正无穷大。static int
round(float a)
返回参数最接近的int
,其中int
四舍五入为正无穷大。static double
scalb(double d, int scaleFactor)
返回d
2scaleFactor
舍入,就好像由单个正确四舍五入的浮点数乘以双重值组的成员。static float
scalb(float f, int scaleFactor)
返回f
2scaleFactor
四舍五入,如同由一个正确四舍五入的浮点数乘以浮点值集合的成员一样。static double
signum(double d)
返回参数的signum函数; 如果参数为零,则为零,如果参数大于零则为1.0,如果参数小于零,则为-1.0。static float
signum(float f)
返回参数的signum函数; 如果参数为零,则为零,如果参数大于零则为1.0f,如果参数小于零,则为-1.0f。static double
sin(double a)
返回角度的三角正弦。static double
sinh(double x)
返回一个double
的双曲正弦值。static double
sqrt(double a)
返回double
值的正确舍入的正平方根。static int
subtractExact(int x, int y)
返回参数的差异,如果结果溢出一个int
,则抛出异常。static long
subtractExact(long x, long y)
返回参数的差异,如果结果溢出一个long
,则抛出异常。static double
tan(double a)
返回角度的三角正切。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的大小。
-
-
-
字段详细信息
-
E
public static final double E
double
值比任何其他的更接近 e ,自然对数的基础。- 另请参见:
- Constant Field Values
-
PI
public static final double PI
double
值比任何其他 pi更接近,圆周长与其直径的比率。- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
sin
public static double sin(double a)
返回角度的三角正弦。 特殊情况:- 如果参数为NaN或无穷大,则结果为NaN。
- 如果参数为零,则结果为与参数相同符号的零。
- 参数
-
a
- 以弧度表示的角度。 - 结果
- 论证的正义。
-
cos
public static double cos(double a)
返回角度的三角余弦。 特殊情况:- 如果参数为NaN或无穷大,则结果为NaN。
- 参数
-
a
- 以弧度表示的角度。 - 结果
- 论证的余弦。
-
tan
public static double tan(double a)
返回角度的三角正切。 特殊情况:- 如果参数为NaN或无穷大,则结果为NaN。
- 如果参数为零,则结果为与参数相同符号的零。
- 参数
-
a
- 以弧度表示的角度。 - 结果
- 争论的切线。
-
asin
public static double asin(double a)
返回值的正弦值; 返回角度在pi / 2到pi / 2的范围内。 特殊情况:- 如果参数为NaN或其绝对值大于1,则结果为NaN。
- 如果参数为零,则结果为与参数相同符号的零。
- 参数
-
a
- 要返回正弦的值。 - 结果
- 争论的正弦。
-
acos
public static double acos(double a)
返回值的反余弦值; 返回的角度在0.0到pi的范围内。 特例:- 如果参数为NaN或其绝对值大于1,则结果为NaN。
- 参数
-
a
- 要返回的余弦值。 - 结果
- 论证的反余弦。
-
atan
public static double atan(double a)
返回值的反正切值; 返回角度在pi / 2到pi / 2的范围内。 特殊情况:- 如果参数是NaN,那么结果是NaN。
- 如果参数为零,则结果为与参数相同符号的零。
- 参数
-
a
- 要返回的反正切值。 - 结果
- 论点的反正切。
-
toRadians
public static double toRadians(double angdeg)
将以度为单位的角度转换为以弧度测量的大致相等的角度。 从度数到弧度的转换通常是不准确的。- 参数
-
angdeg
- 以度为单位的角度 - 结果
-
角度的测量值为
angdeg
,单位为弧度。
-
toDegrees
public static double toDegrees(double angrad)
将以弧度测量的角度转换为以度为单位的近似等效角度。 从弧度到度的转换通常是不准确的; 用户不应该指望cos(toRadians(90.0))
到正好等于0.0
。- 参数
-
angrad
- 以弧度表示的角度 - 结果
-
测量角度为
angrad
度。
-
exp
public static double exp(double a)
返回欧拉的数字e提高到一个double
价值。 特殊情况:- 如果参数是NaN,结果是NaN。
- 如果参数为无穷大,则结果为正无穷大。
- 如果参数为负无穷大,则结果为正零。
- 参数
-
a
- 提高 e的指数。 - 结果
-
值
e
a
,其中 e是自然对数的基数。
-
log
public static double log(double a)
返回double
值的自然对数(基数e )。 特殊情况:- 如果参数为NaN或小于零,则结果为NaN。
- 如果参数为无穷大,则结果为正无穷大。
- 如果参数为正零或负零,则结果为负无穷大。
- 参数
-
a
- 一个值 - 结果
-
值ln
a
,自然对数为a
。
-
log10
public static double log10(double a)
返回double
值的基数10对数。 特殊情况:- 如果参数为NaN或小于零,则结果为NaN。
- 如果参数为无穷大,则结果为正无穷大。
- 如果参数为正零或负零,则结果为负无穷大。
- 如果参数等于10 n,用于整数n,则结果为n。
- 参数
-
a
- 一个值 - 结果
-
基数10对数为
a
。 - 从以下版本开始:
- 1.5
-
sqrt
public static double sqrt(double a)
返回double
值的正确舍入的正平方根。 特殊情况:- 如果参数为NaN或小于零,则结果为NaN。
- 如果参数为无穷大,则结果为正无穷大。
- 如果参数为正零或负零,则结果与参数相同。
double
值。- 参数
-
a
- 一个值。 - 结果
-
正平方根
a
。
-
cbrt
public static double cbrt(double a)
返回double
值的double
根。 对于正有限x
,cbrt(-x) == -cbrt(x)
; 也就是说,负值的多边形根是该值的大小的立方根的负数。 特殊情况:- 如果参数是NaN,那么结果是NaN。
- 如果参数是无限的,则结果是与参数具有相同符号的无穷大。
- 如果参数为零,则结果为与参数相同符号的零。
- 参数
-
a
- 一个值。 - 结果
-
立方根
a
。 - 从以下版本开始:
- 1.5
-
IEEEremainder
public static double IEEEremainder(double f1, double f2)
根据IEEE 754标准计算两个参数的余数运算。 余数的算术值等于f1 - f2
A-n,其中n是最接近商的精确算术值的数学整数f1/f2
,并且如果两个整数都同样接近f1/f2
,那么n是其中的偶数。 如果余数为零,其符号与第一个参数的符号相同。 特殊情况:- 如果任一参数为NaN,或第一个参数为无穷大,或第二个参数为正零或负零,则结果为NaN。
- 如果第一个参数是有限的,第二个参数是无穷大的,那么结果与第一个参数相同。
- 参数
-
f1
- 股息。 -
f2
- 除数。 - 结果
-
剩余时间为
f1
除以f2
。
-
ceil
public static double ceil(double a)
返回最小的(最接近负无穷大)double
值,该值大于或等于该参数,并等于某个整数。 特殊情况:- 如果参数值已经等于数学整数,则结果与参数相同。
- 如果参数为NaN或无穷大或正零或负零,则结果与参数相同。
- 如果参数值小于零但大于-1.0,则结果为负零。
StrictMath.ceil(x)
正是价值-StrictMath.floor(-x)
。- 参数
-
a
- 一个值。 - 结果
- 最大(最接近负无穷大)的浮点值大于或等于参数,并且等于一个数学整数。
-
floor
public static double floor(double a)
返回小于或等于参数的最大(最接近正无穷大)的double
值,并且等于数学整数。 特殊情况:- 如果参数值已经等于数学整数,则结果与参数相同。
- 如果参数为NaN或无穷大或正零或负零,则结果与参数相同。
- 参数
-
a
- 一个值。 - 结果
- 小于或等于参数的最大(最接近正无穷大)浮点值,等于数学整数。
-
rint
public static double rint(double a)
返回值与参数最接近的值为double
,等于数学整数。 如果两个double
数值是数学整数,则与参数的值相等,则结果为均匀的整数值。 特殊情况:- 如果参数值已经等于数学整数,则结果与参数相同。
- 如果参数为NaN或无穷大或正零或负零,则结果与参数相同。
- 参数
-
a
- 一个值。 - 结果
-
最接近的浮点值为
a
,等于一个数学整数。
-
atan2
public static double atan2(double y, double x)
返回从直角坐标(转换角度thetax
,y
)为极坐标(R,θ-)。 该方法通过计算在pi到pi的范围内计算y/x
反正切值来计算相位θ 。 特殊情况:- 如果任一参数为NaN,则结果为NaN。
- 如果第一个参数为正零,第二个参数为正,或第一个参数为正和有限,第二个参数为正无穷大,则结果为正零。
- 如果第一个参数为负零,第二个参数为正,或第一个参数为负,有限,第二个参数为正无穷大,则结果为负零。
- 如果第一个参数为正零,第二个参数为负,或第一个参数为正和有限,第二个参数为负无穷大,则结果为最接近pi的
double
值。 - 如果第一个参数为负零,第二个参数为负,或者第一个参数为负,有限,第二个参数为负无穷大,则结果为最接近pi的
double
值。 - 如果第一个参数为正,第二个参数为正零或负零,或第一个参数为正无穷大,第二个参数为有限,则结果为最接近pi / 2的
double
值。 - 如果第一个参数是负的,第二个参数是正的零或负零,或者第一参数是负无穷大,并且第二个参数是有限的,那么结果是
double
最接近的值到- PI / 2。 - 如果两个参数均为无穷大,则结果为最接近pi / 4的
double
值。 - 如果第一个参数为正无穷大,第二个参数为负无穷大,则结果为最接近3 * pi / 4的
double
值。 - 如果第一个参数为负无穷大,第二个参数为正无穷大,则结果为最接近 - pi / 4的
double
值。 - 如果两个参数均为负无穷大,则结果为最接近-3 * pi / 4的
double
值。
- 参数
-
y
- 纵坐标坐标 -
x
- 横坐标坐标 - 结果
- 极坐标中点( r , theta )的 theta分量对应于笛卡尔坐标中的点( x , y )。
-
pow
public static double pow(double a, double b)
将第一个参数的值返回到第二个参数的幂。 特殊情况:- 如果第二个参数为正或负零,则结果为1.0。
- 如果第二个参数为1.0,则结果与第一个参数相同。
- 如果第二个参数是NaN,那么结果是NaN。
- 如果第一个参数是NaN,第二个参数是非零,那么结果是NaN。
- 如果
- 第一个参数的绝对值大于1,第二个参数为正无穷大,或
- 第一个参数的绝对值小于1,第二个参数为负无穷大,
- 如果
- 第一个参数的绝对值大于1,第二个参数为负无穷大,或
- 第一个参数的绝对值小于1,第二个参数为正无穷大,
- 如果第一个参数的绝对值等于1,第二个参数为无穷大,则结果为NaN。
- 如果
- 第一个参数是正零,第二个参数大于零,或者
- 第一个参数是正无穷大,第二个参数小于零,
- 如果
- 第一个参数是正零,第二个参数小于零,或者
- 第一个参数是正无穷大,第二个参数大于零,
- 如果
- 第一个参数是负零,第二个参数大于零,但不是有限的奇整数,或者
- 第一个参数是负无穷大,第二个参数小于零,但不是有限奇整数,
- 如果
- 第一个参数为负零,第二个参数为正有限奇数整数,或
- 第一个参数为负无穷大,第二个参数为负有限奇数整数,
- 如果
- 第一个参数为负零,第二个参数小于零,但不是有限奇整数
- 第一个参数为负无穷大,第二个参数大于零但不是有限奇整数,
- 如果
- 第一个参数为负零,第二个参数为负有限奇数整数,或
- 第一个参数是负无穷大,第二个参数是正有限奇数整数,
- 如果第一个参数是有限的并且小于零
- 如果第二个参数是有限均匀整数,结果等于将第一个参数的绝对值提高到第二个参数的幂的结果
- 如果第二个参数是有限的奇整数,则结果等于将第一个参数的绝对值提高到第二个参数的幂的结果的负数
- 如果第二个参数是有限的,而不是一个整数,则结果是NaN。
- 如果两个参数都是整数,则结果完全等于将第一个参数提升为第二个参数的幂的数学结果,如果该结果事实上可以精确地表示为
double
值。
(在前述的说明中,一个浮点值被认为是一个整数,当且仅当它是有限的,并且该方法的一个固定点
ceil
或等价地,该方法的一个固定点floor
。的值是一个固定的点的唯一方法,当且仅当将该方法应用于该值的结果等于该值时)。- 参数
-
a
- 基地。 -
b
- 指数。 - 结果
-
值
a
b
。
-
round
public static int round(float a)
返回参数中最接近的int
,其中int
四舍五入为正无穷大。特殊情况:
- 如果参数是NaN,结果为0。
- 如果参数为负无穷大或小于或等于
Integer.MIN_VALUE
的值,则结果等于值Integer.MIN_VALUE
。 - 如果参数为正无穷大或大于或等于
Integer.MAX_VALUE
的值,则结果等于值Integer.MAX_VALUE
。
- 参数
-
a
- 要舍入为整数的浮点值。 - 结果
-
参数的值四舍五入到最接近的
int
值。 - 另请参见:
-
Integer.MAX_VALUE
,Integer.MIN_VALUE
-
round
public static long round(double a)
返回参数最接近的long
,其中long
四舍五入为正无穷大。特殊情况:
- 如果参数是NaN,结果为0。
- 如果参数为负无穷大或小于或等于值
Long.MIN_VALUE
的值,则结果等于值Long.MIN_VALUE
。 - 如果参数为正无穷大或大于或等于
Long.MAX_VALUE
的值,则结果等于Long.MAX_VALUE
的值。
- 参数
-
a
- 要舍入为long
的浮点值。 - 结果
-
参数的值四舍五入到最接近的
long
值。 - 另请参见:
-
Long.MAX_VALUE
,Long.MIN_VALUE
-
random
public static double random()
返回值为double
值为正号,大于等于0.0
,小于1.0
。 返回的值是从该范围(大约)均匀分布的伪随机选择的。首先调用此方法时,它将创建一个新的伪随机数生成器,就像表达式一样
new java.util.Random()
该方法正确同步,以允许多个线程正确使用。 然而,如果许多线程需要以很高的速率产生伪随机数,则可以减少每个线程的争用以拥有自己的伪随机数发生器。
- 结果
-
伪随机
double
大于或等于0.0
且小于1.0
。 - 另请参见:
-
Random.nextDouble()
-
addExact
public static int addExact(int x, int y)
返回其参数的总和,如果结果溢出一个int
,则抛出异常。- 参数
-
x
- 第一个值 -
y
- 第二个值 - 结果
- 结果
- 异常
-
ArithmeticException
- 如果结果溢出一个int - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.addExact(int,int)
-
addExact
public static long addExact(long x, long y)
返回其参数的总和,如果结果溢出一个long
,则抛出异常。- 参数
-
x
- 第一个值 -
y
- 第二个值 - 结果
- 结果
- 异常
-
ArithmeticException
- 如果结果溢出了很长时间 - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.addExact(long,long)
-
subtractExact
public static int subtractExact(int x, int y)
返回参数的差异,如果结果溢出一个int
,则抛出异常。- 参数
-
x
- 第一个值 -
y
- 从第一个值减去的第二个值 - 结果
- 结果
- 异常
-
ArithmeticException
- 如果结果溢出一个int - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.subtractExact(int,int)
-
subtractExact
public static long subtractExact(long x, long y)
返回参数的差异,如果结果溢出一个long
,则抛出异常。- 参数
-
x
- 第一个值 -
y
- 从第一个值中减去的第二个值 - 结果
- 结果
- 异常
-
ArithmeticException
- 如果结果溢出了很长时间 - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.subtractExact(long,long)
-
multiplyExact
public static int multiplyExact(int x, int y)
返回参数的乘积,如果结果溢出一个int
,则抛出异常。- 参数
-
x
- 第一个值 -
y
- 第二个值 - 结果
- 结果
- 异常
-
ArithmeticException
- 如果结果溢出一个int - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.multiplyExact(int,int)
-
multiplyExact
public static long multiplyExact(long x, int y)
返回参数的乘积,如果结果溢出一个long
,则抛出异常。- 参数
-
x
- 第一个值 -
y
- 第二个值 - 结果
- 结果
- 异常
-
ArithmeticException
- 如果结果溢出了很长时间 - 从以下版本开始:
- 9
- 另请参见:
-
Math.multiplyExact(long,int)
-
multiplyExact
public static long multiplyExact(long x, long y)
返回参数的乘积,如果结果溢出一个long
,则抛出异常。- 参数
-
x
- 第一个值 -
y
- 第二个值 - 结果
- 结果
- 异常
-
ArithmeticException
- 如果结果溢出了很长时间 - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.multiplyExact(long,long)
-
toIntExact
public static int toIntExact(long value)
返回值为long
参数; 如果值溢出int
则抛出异常。- 参数
-
value
- 长值 - 结果
- 作为int的参数
- 异常
-
ArithmeticException
- 如果argument
溢出一个int - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.toIntExact(long)
-
multiplyFull
public static long multiplyFull(int x, int y)
返回参数的确切数学积。- 参数
-
x
- 第一个值 -
y
- 第二个值 - 结果
- 结果
- 从以下版本开始:
- 9
- 另请参见:
-
Math.multiplyFull(int,int)
-
multiplyHigh
public static long multiplyHigh(long x, long y)
作为long
返回的两个64位因子的128位产品中最显着的64位。- 参数
-
x
- 第一个值 -
y
- 第二个值 - 结果
- 结果
- 从以下版本开始:
- 9
- 另请参见:
-
Math.multiplyHigh(long,long)
-
floorDiv
public static int floorDiv(int x, int y)
返回小于或等于代数商的最大(最接近正无穷大)int
值。 有一个特殊情况,如果股息为Integer.MIN_VALUE ,除数为-1
,则发生整数溢出,结果等于Integer.MIN_VALUE
。参见
Math.floorDiv
的例子和与整数除法/
算子的比较。- 参数
-
x
- 股息 -
y
- 除数 - 结果
-
小于或等于代数商的最大(最接近正无穷大)
int
值。 - 异常
-
ArithmeticException
- 如果除数y
为零 - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.floorDiv(int, int)
,Math.floor(double)
-
floorDiv
public static long floorDiv(long x, int y)
返回小于或等于代数商的最大(最接近正无穷大)long
值。 有一个特殊情况,如果股息为Long.MIN_VALUE ,除数为-1
,则发生整数溢出,结果等于Long.MIN_VALUE
。参见
Math.floorDiv
的例子和与整数除法/
算子的比较。- 参数
-
x
- 股息 -
y
- 除数 - 结果
-
小于或等于代数商的最大(最接近正无穷大)
int
值。 - 异常
-
ArithmeticException
- 如果除数y
为零 - 从以下版本开始:
- 9
- 另请参见:
-
Math.floorDiv(long, int)
,Math.floor(double)
-
floorDiv
public static long floorDiv(long x, long y)
返回小于或等于代数商的最大(最接近正无穷大)long
值。 有一个特殊情况,如果股息为Long.MIN_VALUE ,除数为-1
,则发生整数溢出,结果等于Long.MIN_VALUE
。参见
Math.floorDiv
的例子,并与整数除法/
运算符进行比较。- 参数
-
x
- 股息 -
y
- 除数 - 结果
-
小于或等于代数商的最大(最接近正无穷大)
long
值。 - 异常
-
ArithmeticException
- 如果除数y
为零 - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.floorDiv(long, long)
,Math.floor(double)
-
floorMod
public static int floorMod(int x, int y)
返回int
参数的底模数。地板模数为
x - (floorDiv(x, y) * y)
,与除数y
具有相同的符号,并在-abs(y) < r < +abs(y)
的范围内。floorDiv
和floorMod
之间的关系是这样的:-
floorDiv(x, y) * y + floorMod(x, y) == x
有关示例和
%
操作符的比较,请参阅Math.floorMod
。- 参数
-
x
- 股息 -
y
- 除数 - 结果
-
地板模数
x - (floorDiv(x, y) * y)
- 异常
-
ArithmeticException
- 如果除数y
为零 - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.floorMod(int, int)
,floorDiv(int, int)
-
-
floorMod
public static int floorMod(long x, int y)
返回long
和int
参数的底模。地板模量为
x - (floorDiv(x, y) * y)
,具有相同的符号作为除数y
,并且在范围内-abs(y) < r < +abs(y)
。floorDiv
和floorMod
之间的关系是这样的:-
floorDiv(x, y) * y + floorMod(x, y) == x
有关示例和
%
操作符的比较,请参阅Math.floorMod
。- 参数
-
x
- 股息 -
y
- 除数 - 结果
-
地板模数
x - (floorDiv(x, y) * y)
- 异常
-
ArithmeticException
- 如果除数y
为零 - 从以下版本开始:
- 9
- 另请参见:
-
Math.floorMod(long, int)
,floorDiv(long, int)
-
-
floorMod
public static long floorMod(long x, long y)
返回long
参数的底模数。地板模量为
x - (floorDiv(x, y) * y)
,具有相同的符号作为除数y
,并且在范围内-abs(y) < r < +abs(y)
。floorDiv
和floorMod
之间的关系是这样的:-
floorDiv(x, y) * y + floorMod(x, y) == x
有关示例和
%
操作符的比较,请参阅Math.floorMod
。- 参数
-
x
- 股息 -
y
- 除数 - 结果
-
地板模数
x - (floorDiv(x, y) * y)
- 异常
-
ArithmeticException
- 如果除数y
为零 - 从以下版本开始:
- 1.8
- 另请参见:
-
Math.floorMod(long, long)
,floorDiv(long, long)
-
-
abs
public static int abs(int a)
- 参数
-
a
- 绝对值要确定的参数。 - 结果
- 参数的绝对值。
-
abs
public static long abs(long a)
- 参数
-
a
- 绝对值要确定的参数。 - 结果
- 参数的绝对值。
-
abs
public static float abs(float a)
返回值为float
绝对值。 如果参数不为负,则返回参数。 如果参数为负,则返回参数的否定。 特殊情况:- 如果参数为正零或负零,结果为正零。
- 如果论证是无限的,结果是正无穷大。
- 如果参数是NaN,结果是NaN。
- API Note:
-
如上所述,该方法的一个有效实现由下面的表达式给出,其计算具有与参数相同的指数和有效数的
float
,但是具有指示正值的保证零符号位:
Float.intBitsToFloat(0x7fffffff & Float.floatToRawIntBits(a))
- 参数
-
a
- 绝对值要确定的参数 - 结果
- 参数的绝对值。
-
abs
public static double abs(double a)
返回double
值的绝对值。 如果参数不为负,则返回参数。 如果参数为负,则返回参数的否定。 特殊情况:- 如果参数为正零或负零,结果为正零。
- 如果论证是无限的,结果是正无穷大。
- 如果参数是NaN,结果是NaN。
- API Note:
-
如上所述,该方法的一个有效实现由以下表达式给出,其计算具有与参数相同的指数和有效
double
,但是具有指示正值的保证零符号位:
Double.longBitsToDouble((Double.doubleToRawLongBits(a)<<1)>>>1)
- 参数
-
a
- 绝对值要确定的参数 - 结果
- 参数的绝对值。
-
max
public static int max(int a, int b)
- 参数
-
a
- 一个论据。 -
b
- 另一个论点。 - 结果
-
较大的
a
和b
。
-
max
public static long max(long a, long b)
- 参数
-
a
- 一个论据。 -
b
- 另一个论点。 - 结果
-
较大的
a
和b
。
-
max
public static float max(float a, float b)
返回两个float
值中的较大值。 也就是说,结果是更接近正无穷大的论据。 如果参数的值相同,结果是相同的值。 如果任一值为NaN,则结果为NaN。 与数值比较运算符不同,该方法认为负零严格小于正零。 如果一个参数为正零,另一个为负,结果为正零。- 参数
-
a
- 一个论据。 -
b
- 另一个论点。 - 结果
-
较大的
a
和b
。
-
max
public static double max(double a, double b)
返回两个double
中的较大值。 也就是说,结果是更接近正无穷大的论据。 如果参数的值相同,结果是相同的值。 如果任一值为NaN,则结果为NaN。 与数值比较运算符不同,该方法认为负零严格小于正零。 如果一个参数为正零,另一个为负,结果为正零。- 参数
-
a
- 一个论点。 -
b
- 另一个论点。 - 结果
-
较大的
a
和b
。
-
min
public static int min(int a, int b)
- 参数
-
a
- 一个论据。 -
b
- 另一个论点。 - 结果
-
较小的
a
和b
。
-
min
public static long min(long a, long b)
- 参数
-
a
- 一个论点。 -
b
- 另一个论点。 - 结果
-
较小的
a
和b
。
-
min
public static float min(float a, float b)
返回两个float
中的较小值。 也就是说,结果是更接近负无穷大的值。 如果参数的值相同,结果是相同的值。 如果任一值为NaN,则结果为NaN。 与数值比较运算符不同,该方法认为负零严格小于正零。 如果一个参数为正零,另一个为负零,结果为负零。- 参数
-
a
- 一个论据。 -
b
- 另一个论点。 - 结果
-
较小的
a
和b.
-
min
public static double min(double a, double b)
返回两个double
中的较小值。 也就是说,结果是更接近负无穷大的值。 如果参数的值相同,结果是相同的值。 如果任一值为NaN,则结果为NaN。 与数值比较运算符不同,该方法认为负零严格小于正零。 如果一个参数为正零,另一个为负零,结果为负零。- 参数
-
a
- 一个参数。 -
b
- 另一个参数。 - 结果
-
较小的
a
和b
。
-
fma
public static double fma(double a, double b, double c)
返回三个参数的融合乘法加法; 也就是说,返回与第三个参数相加的前两个参数的确切乘积,然后舍入一次到最接近的double
。 舍入是使用round to nearest even rounding mode完成的。 相比之下,如果将a * b + c
评估为常规浮点表达式,则涉及两个舍入误差,第一个用于乘法运算,第二个用于加法运算。特殊情况:
- 如果任何参数是NaN,结果是NaN。
- 如果前两个参数之一是无穷大,另一个为零,则结果为NaN。
- 如果前两个参数的确切乘积是无穷大的(换句话说,至少有一个参数是无穷大的,另一个不是零,也不是NaN),而第三个参数是相反符号的无穷大,结果是NaN。
请注意,
fusedMac(a, 1.0, c)
返回与(a + c
)相同的结果。 然而,fusedMac(a, b, +0.0)
并不总是返回相同的结果(a * b
),因为fusedMac(-0.0, +0.0, +0.0)
为+0.0
,而(-0.0 * +0.0
)为-0.0
;fusedMac(a, b, -0.0)
相当于(a * b
)。- API Note:
- 该方法对应于IEEE 754-2008中定义的fusedMultiplyAdd操作。
- 参数
-
a
- 一个值 -
b
- 一个值 -
c
- 一个值 - 结果
-
(
a ×
b +
c )计算,好像无限范围和精度,并舍入一次到最接近的
double
值 - 从以下版本开始:
- 9
-
fma
public static float fma(float a, float b, float c)
返回三个参数的融合乘法加法; 也就是说,返回与第三个参数相加的前两个参数的确切乘积,然后舍入一次到最接近的float
。 舍入是使用round to nearest even rounding mode完成的。 相比之下,如果将a * b + c
评估为常规浮点表达式,则涉及两个舍入误差,第一个用于乘法运算,第二个用于加法运算。特殊情况:
- 如果任何参数是NaN,结果是NaN。
- 如果前两个参数之一是无穷大,另一个为零,则结果为NaN。
- 如果前两个参数的确切乘积是无穷大的(换句话说,至少有一个参数是无穷大的,另一个不是零,也不是NaN),而第三个参数是相反符号的无穷大,结果是NaN。
请注意,
fma(a, 1.0f, c)
返回与(a + c
)相同的结果。 然而,fma(a, b, +0.0f)
并不总是返回相同的结果(a * b
),因为fma(-0.0f, +0.0f, +0.0f)
为+0.0f
,而(-0.0f * +0.0f
)为-0.0f
;fma(a, b, -0.0f)
相当于(a * b
)。- API Note:
- 该方法对应于IEEE 754-2008中定义的fusedMultiplyAdd操作。
- 参数
-
a
- 一个值 -
b
- 一个值 -
c
- 一个值 - 结果
-
(A A-
B +
C)来计算,因为如果具有无限范围和精度,并且一旦四舍五入到最近的
float
值 - 从以下版本开始:
- 9
-
ulp
public static double ulp(double d)
返回参数的ulp的大小。 最后一个位置的ulp单位是double
值,这个浮点值与double
值之间的正距离越大。 请注意,对于非NaN x ,ulp(-x) == ulp(x)
。特殊情况:
- 如果参数是NaN,那么结果是NaN。
- 如果参数为正或负无穷大,则结果为正无穷大。
- 如果参数为正或负为零,则结果为
Double.MIN_VALUE
。 - 如果参数为±
Double.MAX_VALUE
,则结果等于2 971 。
- 参数
-
d
- 要返回ulp的浮点值 - 结果
- 参数的ulp的大小
- 从以下版本开始:
- 1.5
-
ulp
public static float ulp(float f)
返回参数的ulp的大小。 最后一个位置的ulp单位是float
值,这个浮点值与float
值之间的正距离越大。 请注意,对于非NaN x ,ulp(-x) == ulp(x)
。特殊情况:
- 如果参数是NaN,那么结果是NaN。
- 如果参数为正或负无穷大,则结果为正无穷大。
- 如果参数为正或负零,则结果为
Float.MIN_VALUE
。 - 如果参数为±
Float.MAX_VALUE
,则结果等于2 104 。
- 参数
-
f
- 要返回ulp的浮点值 - 结果
- 参数的ulp的大小
- 从以下版本开始:
- 1.5
-
signum
public static double signum(double d)
返回参数的signum函数; 如果参数为零,则为零,如果参数大于零则为1.0,如果参数小于零,则为-1.0。特殊情况:
- 如果参数是NaN,那么结果是NaN。
- 如果参数为正零或负零,则结果与参数相同。
- 参数
-
d
- 要返回其符号的浮点值 - 结果
- 参数的signum函数
- 从以下版本开始:
- 1.5
-
signum
public static float signum(float f)
返回参数的signum函数; 如果参数为零,则为零,如果参数大于零则为1.0f,如果参数小于零,则为-1.0f。特殊情况:
- 如果参数是NaN,那么结果是NaN。
- 如果参数为正零或负零,则结果与参数相同。
- 参数
-
f
- 要返回其符号的浮点值 - 结果
- 参数的signum函数
- 从以下版本开始:
- 1.5
-
sinh
public static double sinh(double x)
返回一个double
的双曲正弦值。 x的双曲正弦被定义为( e x -e -x )/ 2,其中e是Euler's number 。特殊情况:
- 如果参数是NaN,那么结果是NaN。
- 如果参数是无限的,则结果是与参数具有相同符号的无穷大。
- 如果参数为零,则结果为与参数相同符号的零。
- 参数
-
x
- 要返回双曲正弦的数字。 - 结果
-
双曲正弦为
x
。 - 从以下版本开始:
- 1.5
-
cosh
public static double cosh(double x)
返回double
值的双曲余弦值。 x的双曲余弦被定义为( e x + e -x )/ 2,其中e是Euler's number 。特殊情况:
- 如果参数是NaN,那么结果是NaN。
- 如果参数是无穷大的,则结果是正无穷大。
- 如果参数为零,则结果为
1.0
。
- 参数
-
x
- 要返回双曲余弦的数字。 - 结果
-
双曲余弦
x
。 - 从以下版本开始:
- 1.5
-
tanh
public static double tanh(double x)
返回double
值的双曲正切值。 x的双曲正切定义为(E X -电子-x)/(E X + E -x),换句话说, 二七○五四五九九六八九○四九四 / 二百七万五千四百五十九亿九千六百八十九万八千三百八十九 。 请注意,确切的tanh的绝对值始终小于1。特殊情况:
- 如果参数是NaN,那么结果是NaN。
- 如果参数为零,则结果为与参数相同符号的零。
- 如果参数为无穷大,则结果为
+1.0
。 - 如果参数为负无穷大,则结果为
-1.0
。
- 参数
-
x
- 要返回其双曲正切的数字。 - 结果
-
双曲正切
x
。 - 从以下版本开始:
- 1.5
-
hypot
public static double hypot(double x, double y)
返回sqrt( x 2 + y 2 ),没有中间溢出或下溢。特殊情况:
- 如果任一参数为无穷大,则结果为无穷大。
- 如果任一参数为NaN,且两个参数都不是无穷大,则结果为NaN。
- 参数
-
x
- 一个值 -
y
- 一个值 - 结果
- sqrt( x 2 + y 2 ),没有中间溢出或下溢
- 从以下版本开始:
- 1.5
-
expm1
public static double expm1(double x)
返回e x -1。 请注意,对于接近0 的x值的确切数额expm1(x)
+ 1更接近E X比的真实结果exp(x)
。特殊情况:
- 如果参数是NaN,结果是NaN。
- 如果参数为无穷大,则结果为正无穷大。
- 如果参数为负无穷大,则结果为-1.0。
- 如果参数为零,则结果为与参数相同符号的零。
- 参数
-
x
- e e计算中的指数 ex
-1。 - 结果
-
值
e
x
- 1。 - 从以下版本开始:
- 1.5
-
log1p
public static double log1p(double x)
返回参数之和1注的自然对数,对于小值x
,结果log1p(x)
更接近LN(1 +的真实结果x
),比的浮点评价log(1.0+x)
。特殊情况:
- 如果参数为NaN或小于-1,则结果为NaN。
- 如果参数为无穷大,则结果为正无穷大。
- 如果参数为负,则结果为负无穷大。
- 如果参数为零,则结果为与参数相同符号的零。
- 参数
-
x
- 一个值 - 结果
-
值ln(
x
+ 1),自然日志为x
+ 1 - 从以下版本开始:
- 1.5
-
copySign
public static double copySign(double magnitude, double sign)
使用第二个浮点参数的符号返回第一个浮点参数。 对于这种方法,NaNsign
参数总是被视为正面。- 参数
-
magnitude
- 提供结果大小的参数 -
sign
- 提供结果符号的参数 - 结果
-
价值为
magnitude
,标志为sign
。 - 从以下版本开始:
- 1.6
-
copySign
public static float copySign(float magnitude, float sign)
使用第二个浮点参数的符号返回第一个浮点参数。 对于这种方法,NaNsign
参数总是被视为正面。- 参数
-
magnitude
- 提供结果大小的参数 -
sign
- 提供结果符号的参数 - 结果
-
大小为
magnitude
,符号为sign
。 - 从以下版本开始:
- 1.6
-
getExponent
public static int getExponent(float f)
返回在float
的表示中使用的无偏指数。 特殊情况:- 如果参数为NaN或无限,则结果为
Float.MAX_EXPONENT
+ 1。 - 如果参数为零或次正常,则结果为
Float.MIN_EXPONENT
-1。
- 参数
-
f
- 一个float
价值 - 结果
- 参数的无偏指数
- 从以下版本开始:
- 1.6
- 如果参数为NaN或无限,则结果为
-
getExponent
public static int getExponent(double d)
返回在double
的表示中使用的无偏指数。 特殊情况:- 如果参数为NaN或无限,则结果为
Double.MAX_EXPONENT
+ 1。 - 如果参数为零或次正常,则结果为
Double.MIN_EXPONENT
-1。
- 参数
-
d
- 一个double
价值 - 结果
- 参数的无偏指数
- 从以下版本开始:
- 1.6
- 如果参数为NaN或无限,则结果为
-
nextAfter
public static double nextAfter(double start, double direction)
返回与第二个参数方向相邻的第一个参数的浮点数。 如果两个参数都相等,则返回第二个参数。特殊情况:
- 如果任一参数是NaN,则返回NaN。
- 如果两个参数都是带符号的零,
direction
被不变地返回(如果参数比较为相等则返回第二个参数的要求)。 - 如果
start
为±Double.MIN_VALUE
,而direction
具有使结果应具有较小幅度的值,则返回与start
相同符号的零。 - 如果
start
是无限的,direction
具有这样的结果应该有一个小幅度的值Double.MAX_VALUE
用相同的符号start
返回。 - 如果
start
等于±Double.MAX_VALUE
,并且direction
具有使得结果应该具有较大幅度的值,则返回与start
具有相同符号的无穷大。
- 参数
-
start
- 起始浮点值 -
direction
- 应该返回start
的邻居或start
哪一个的值 - 结果
-
邻近浮点数
start
中的方向direction
。 - 从以下版本开始:
- 1.6
-
nextAfter
public static float nextAfter(float start, double direction)
返回与第二个参数方向相邻的第一个参数的浮点数。 如果两个参数都相等,则返回等于第二个参数的值。特殊情况:
- 如果任一参数是NaN,则返回NaN。
- 如果两个参数都是带符号的零,则返回值为
direction
的值。 - 如果
start
是±Float.MIN_VALUE
,并且direction
具有使得结果应该具有较小幅度的值,则返回与start
具有相同符号的零。 - 如果
start
是无限的,direction
具有这样的结果应该有一个小幅度的值Float.MAX_VALUE
用相同的符号start
返回。 - 如果
start
等于±Float.MAX_VALUE
,并且direction
具有使得结果应该具有较大幅度的值,则返回与start
相同符号的无穷大。
- 参数
-
start
- 起始浮点值 -
direction
- 应该返回start
的邻居或start
哪一个的值 - 结果
-
邻近浮点数
start
中的方向direction
。 - 从以下版本开始:
- 1.6
-
nextUp
public static double nextUp(double d)
返回与正无穷大方向相邻的d
的浮点值。 这种方法在语义上相当于nextAfter(d, Double.POSITIVE_INFINITY)
; 然而,一个nextUp
实现可能会比其等效的nextAfter
调用运行得更快。特殊情况:
- 如果参数是NaN,结果是NaN。
- 如果论证是正无穷大,结果是正无穷大。
- 如果参数为零,结果为
Double.MIN_VALUE
- 参数
-
d
- 起始浮点值 - 结果
- 相邻浮点值接近正无穷大。
- 从以下版本开始:
- 1.6
-
nextUp
public static float nextUp(float f)
返回与正无穷大方向相邻的f
的浮点值。 这种方法在语义上相当于nextAfter(f, Float.POSITIVE_INFINITY)
; 但是,一个nextUp
实现可能比其等效的nextAfter
调用运行速度更快。特殊情况:
- 如果参数是NaN,结果是NaN。
- 如果论证是正无穷大,结果是正无穷大。
- 如果参数为零,结果为
Float.MIN_VALUE
- 参数
-
f
- 起始浮点值 - 结果
- 相邻浮点值接近正无穷大。
- 从以下版本开始:
- 1.6
-
nextDown
public static double nextDown(double d)
返回与负无穷大方向相邻的d
的浮点值。 这种方法在语义上相当于nextAfter(d, Double.NEGATIVE_INFINITY)
; 然而,nextDown
实现可能比其等效的nextAfter
调用运行速度更快。特殊情况:
- 如果参数是NaN,结果是NaN。
- 如果参数为负无穷大,则结果为负无穷大。
- 如果参数为零,结果为
-Double.MIN_VALUE
- 参数
-
d
- 起始浮点值 - 结果
- 相邻浮点值接近负无穷大。
- 从以下版本开始:
- 1.8
-
nextDown
public static float nextDown(float f)
返回与负无穷大方向相邻的f
的浮点值。 这种方法在语义上相当于nextAfter(f, Float.NEGATIVE_INFINITY)
; 然而,一个nextDown
实现可能比其等效的nextAfter
调用运行速度更快。特殊情况:
- 如果参数是NaN,结果是NaN。
- 如果参数为负无穷大,则结果为负无穷大。
- 如果参数为零,结果为
-Float.MIN_VALUE
- 参数
-
f
- 起始浮点值 - 结果
- 相邻浮点值接近负无穷大。
- 从以下版本开始:
- 1.8
-
scalb
public static double scalb(double d, int scaleFactor)
返回d
2scaleFactor
四舍五入,就像一个正确四舍五入的浮点数乘以双重值集合的成员一样。 有关浮点值集的讨论,请参阅Java语言规范。 如果结果的指数在Double.MIN_EXPONENT
和Double.MAX_EXPONENT
之间,那么答案将被精确计算。 如果结果的指数大于Double.MAX_EXPONENT
,则返回无限大。 请注意,如果结果异常,则精度可能会丢失; 也就是说,当scalb(x, n)
是次正常时,scalb(scalb(x, n), -n)
可能不等于x 。 当结果为非NaN时,结果与d
具有相同的符号。特殊情况:
- 如果第一个参数是NaN,则返回NaN。
- 如果第一个参数为无穷大,则返回相同符号的无穷大。
- 如果第一个参数为零,则返回相同符号的零。
- 参数
-
d
-d
两个幂来缩放的数字。 -
scaleFactor
- 2的功率用于缩放d
- 结果
-
d
2scaleFactor
- 从以下版本开始:
- 1.6
-
scalb
public static float scalb(float f, int scaleFactor)
返回f
2scaleFactor
四舍五入,如同由一个正确四舍五入的浮点数乘以浮点值集合的成员一样。 有关浮点值集的讨论,请参阅Java语言规范。 如果结果的指数在Float.MIN_EXPONENT
和Float.MAX_EXPONENT
之间,那么答案是准确计算的。 如果结果的指数大于Float.MAX_EXPONENT
,则返回无穷大。 请注意,如果结果异常,则精度可能会丢失; 也就是说,当scalb(x, n)
是次正常时,scalb(scalb(x, n), -n)
可能不等于x 。 当结果为非NaN时,结果与f
具有相同的符号。特殊情况:
- 如果第一个参数是NaN,则返回NaN。
- 如果第一个参数为无穷大,则返回相同符号的无穷大。
- 如果第一个参数为零,则返回相同符号的零。
- 参数
-
f
-f
两个幂来缩放的数字。 -
scaleFactor
- 2的功率用于缩放f
- 结果
-
f
2scaleFactor
- 从以下版本开始:
- 1.6
-
-