- java.lang.Object
-
- java.lang.StrictMath
-
public final class StrictMathextends 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
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 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)
返回Euler的数字 e ,double
值的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
参数的floor模数。static int
floorMod(long x, int y)
返回long
和int
参数的floor数。static long
floorMod(long x, long y)
返回long
参数的floor模数。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)
返回参数和的总和的自然对数。static double
max(double a, double b)
返回两个double
值中较大的double
。static float
max(float a, float b)
返回两个float
值中较大的float
。static int
max(int a, int b)
返回两个int
值中较大的int
。static long
max(long a, long b)
返回两个long
值中较大的long
。static double
min(double a, double b)
返回两个double
值中较小的double
。static float
min(float a, float b)
返回两个float
值中较小的float
。static int
min(int a, int b)
返回两个int
值中较小的int
。static long
min(long a, long b)
返回两个long
值中较小的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
,并将关系舍入为正无穷大。static int
round(float a)
返回与参数最接近的int
,并将关系四舍五入为正无穷大。static double
scalb(double d, int scaleFactor)
返回d
×2scaleFactor
舍入,就好像由单个正确舍入的浮点乘以双scaleFactor
值的成员一样。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大小。
-
-
-
方法详细信息
-
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)
返回Euler的数字e ,double
值的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
值的多维数据集根。 对于正有限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,θ-)。 该方法通过计算反正切计算的相位THETAy/x
PI到pi -在的范围内。 特别案例:- 如果任一参数是NaN,则结果为NaN。
- 如果第一个参数为正零且第二个参数为正,或者第一个参数为正且有限且第二个参数为正无穷大,则结果为正零。
- 如果第一个参数为负零且第二个参数为正,或者第一个参数为负且有限且第二个参数为正无穷大,则结果为负零。
- 如果第一个参数为正零且第二个参数为负,或者第一个参数为正且有限且第二个参数为负无穷大,则结果为最接近pi的
double
值。 - 如果第一个参数是负零,第二个参数是负的,或者第一参数是负的有限值,第二个参数是负无穷大,那么结果是
double
值最接近- PI。 - 如果第一个参数为正且第二个参数为正零或负零,或者第一个参数为正无穷大且第二个参数为有限,则结果为最接近pi / 2的
double
值。 - 如果第一个参数是负的,第二个参数是正的零或负零,或者第一参数是负无穷大,并且第二个参数是有限的,那么结果是
double
最接近的值到- PI / 2。 - 如果两个参数都是正无穷大,则结果是最接近pi / 4的
double
值。 - 如果第一个参数是正无穷大而第二个参数是负无穷大,则结果是最接近3 * pi / 4的
double
值。 - 如果第一个参数是负无穷大,第二个参数是正无穷大,那么结果是
double
最接近的值到- PI / 4。 - 如果两个参数均为负无穷大,则结果是最接近-3 * pi / 4的
double
值。
- 参数
-
y
- 纵坐标 -
x
- 横坐标 - 结果
- 极坐标中点( r , 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
,其中四度为正无穷大。特别案例:
- 如果参数为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
,并将关系四舍五入为正无穷大。特别案例:
- 如果参数为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
参数的floor模数。地板模数为
x - (floorDiv(x, y) * y)
,与除数y
具有相同的符号,范围为-abs(y) < r < +abs(y)
。floorDiv
和floorMod
之间的关系floorDiv
:-
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
:-
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
参数的floor模数。地板模数为
x - (floorDiv(x, y) * y)
,与除数y
具有相同的符号,范围为-abs(y) < r < +abs(y)
。floorDiv
和floorMod
之间的关系floorDiv
:-
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)
返回int
值的绝对值。 如果参数不是负数,则返回参数。 如果参数为负数,则返回参数的否定。请注意,如果参数等于值
Integer.MIN_VALUE
,最负值可表示的值int
,则结果为相同值,即负值。- 参数
-
a
- 要确定其绝对值的参数。 - 结果
- 参数的绝对值。
-
abs
public static long abs(long a)
返回long
值的绝对值。 如果参数不是负数,则返回参数。 如果参数为负数,则返回参数的否定。请注意,如果参数等于值
Long.MIN_VALUE
,最负值可表示的值long
,则结果是相同的值,即负值。- 参数
-
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
值中较大的float
。 也就是说,结果是更接近正无穷大的论证。 如果参数具有相同的值,则结果是相同的值。 如果任一值为NaN,则结果为NaN。 与数值比较运算符不同,此方法将负零视为严格小于正零。 如果一个参数为正零而另一个参数为负零,则结果为正零。- 参数
-
a
- 一个论点。 -
b
- 另一个论点。 - 结果
- 较大的
a
和b
。
-
max
public static double max(double a, double b)
返回两个double
值中较大的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
值中较小的float
。 也就是说,结果是值更接近负无穷大。 如果参数具有相同的值,则结果是相同的值。 如果任一值为NaN,则结果为NaN。 与数值比较运算符不同,此方法将负零视为严格小于正零。 如果一个参数为正零而另一个参数为负零,则结果为负零。- 参数
-
a
- 一个论点。 -
b
- 另一个论点。 - 结果
- 较小的
a
和b.
-
min
public static double min(double a, double b)
返回两个double
值中较小的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 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大小。 最后一个位于double
值的ulp单位是该浮点值与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大小。 最后一个位置为float
的ulp单位是该浮点值与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的浮点值 - 结果
- 参数的signum函数
- 从以下版本开始:
- 1.5
-
signum
public static float signum(float f)
返回参数的signum函数; 如果参数为零则为零,如果参数大于零则为1.0f,如果参数小于零则为-1.0f。特别案例:
- 如果参数是NaN,则结果为NaN。
- 如果参数为正零或负零,则结果与参数相同。
- 参数
-
f
- 要返回其signum的浮点值 - 结果
- 参数的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 -e -x )/( e x + e -x ),换句话说, sinh(x) / cosh(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
- 在计算 ex
-1时将 e提高到的指数。 - 结果
- 值 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
具有使得结果应具有较小幅度的值,则返回与start具有相同符号的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
舍入,就好像由单个正确舍入的浮点乘以双scaleFactor
值的成员一样。 有关浮点值集的讨论,请参阅Java语言规范。 如果结果的指数在Double.MIN_EXPONENT
和Double.MAX_EXPONENT
之间,则答案将精确计算。 如果结果的指数大于Double.MAX_EXPONENT
,则返回无穷大。 请注意,如果结果是低于正常的,则可能会丢失精度; 也就是说,当scalb(x, n)
是低于正常时,scalb(scalb(x, n), -n)
可能不等于x 。 当结果为非NaN时,结果与d
具有相同的符号。特别案例:
- 如果第一个参数是NaN,则返回NaN。
- 如果第一个参数是无穷大,则返回相同符号的无穷大。
- 如果第一个参数为零,则返回相同符号的零。
- 参数
-
d
- 要以2的幂进行缩放的数字。 -
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
- 以2的幂为单位缩放的数字。 -
scaleFactor
- 2的幂用于缩放f
- 结果
-
f
2scaleFactor
- 从以下版本开始:
- 1.6
-
-