public final class Math extends Object
Math
类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。
与StrictMath
类的一些数字方法不同,Math类的StrictMath
所有Math
都没有定义为返回比特位相同的结果。 这种放松允许在不需要严格再现性的情况下执行更好的实现。
默认情况下,许多Math
方法只需调用中的对应方法是StrictMath
组织落实。 鼓励代码生成器使用平台特定的本机库或微处理器指令(如果可用),以提供Math
方法的Math
实现。 这种更高性能的实现仍然必须符合Math的Math
。
实施规范的质量有两个属性,返回结果的准确性和方法的单调性。 的浮点精度Math
方法在ULPS,单位在最后的地方来衡量。 对于给定的浮点格式, ulp特定实数值的是两个浮点值包围该数值之间的距离。 当讨论整个方法的准确性而不是一个具体的参数时,引用的ulps的数量是任何参数的最坏情况错误。 如果方法总是出现小于0.5 ulps的错误,则该方法总是返回最接近精确结果的浮点数; 这种方法是正确的四舍五入 。 一个正确舍入的方法通常是一个最好的浮点近似可以; 然而,对于许多浮点方法来说,这是不切实际的。 相反,对于Math
类,某些方法允许更大的1或2 Math
的误差范围。 非正式地,使用1 ul的错误限制,当确切的结果是可表示的数字时,应该将精确的结果作为计算结果返回; 否则,可以返回包含确切结果的两个浮点值之一。 对于大量的精确结果,支架的端点之一可能是无限大的。 除了个人论证的准确性之外,维持不同论点的方法之间的适当关系也很重要。 因此,绝大多数0.5 ulp误差的方法都是半单调的 :每当数学函数不减小时,数学函数也是不减少的,同样地,当数学函数不增加时,浮点数近似也是如此点近似。 并非所有具有1 ulp精度的近似值将自动满足单调性要求。
该平台使用带有int和long基元类型的带符号二进制补码整数运算。 开发人员应该选择原始类型,以确保算术运算始终产生正确的结果,这在某些情况下意味着操作不会溢出计算值的范围。 最佳做法是选择原始类型和算法以避免溢出。 在情况下,大小为int
或long
,需要检测溢出错误,方法addExact
, subtractExact
, multiplyExact
和toIntExact
抛出ArithmeticException
结果溢出时。 对于其他算术运算,如除法,绝对值,递增,递减和否定溢出仅在特定的最小值或最大值发生时,应根据最小值或最大值进行检查。
Modifier and Type | Field and Description |
---|---|
static double |
E
double 值比其他任何一个都更接近
e ,自然对数的基数。
|
static double |
PI
double 值比任何其他的更接近
pi ,圆周长与其直径的比率。
|
Modifier and Type | Method and Description |
---|---|
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,则抛出
int 。
|
static long |
addExact(long x, long y)
返回其参数的总和,如果结果溢出long,则抛出
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)
返回从直角坐标(转换角度
theta
x ,
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 int |
decrementExact(int a)
返回一个递减1的参数,如果结果溢出int,则
int 。
|
static long |
decrementExact(long a)
将返回的参数递减1,如果结果溢出long,则
long 。
|
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, long y)
返回小于或等于代数商的最大(最接近正无穷大)
long 值。
|
static int |
floorMod(int x, int y)
返回
int 参数的底部模数。
|
static long |
floorMod(long x, long y)
返回
long 参数的底模数。
|
static int |
getExponent(double d)
返回a的表示中使用的无偏指数
double 。
|
static int |
getExponent(float f)
返回a的表示中使用的无偏指数
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,则
int 。
|
static long |
incrementExact(long a)
返回一个增加1的参数,如果结果溢出long,则
long 。
|
static double |
log(double a)
返回的自然对数(以
e为底)
double 值。
|
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,则抛出
int 。
|
static long |
multiplyExact(long x, long y)
返回参数的乘积,如果结果溢出long,则抛出
long 。
|
static int |
negateExact(int a)
返回参数的否定,如果结果溢出int,则
int 。
|
static long |
negateExact(long a)
返回参数的否定,如果结果溢出long,则
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 |
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 2
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 |
sin(double a)
返回角度的三角正弦。
|
static double |
sinh(double x)
返回的双曲正弦
double 值。
|
static double |
sqrt(double a)
返回的正确舍入正平方根
double 值。
|
static int |
subtractExact(int x, int y)
返回参数的差异,如果结果溢出int,则抛出
int 。
|
static long |
subtractExact(long x, long y)
返回参数的差异,如果结果溢出long,则抛出
long 。
|
static double |
tan(double a)
返回角度的三角正切。
|
static double |
tanh(double x)
返回的双曲正切
double 值。
|
static double |
toDegrees(double angrad)
将以弧度测量的角度转换为以度为单位的近似等效角度。
|
static int |
toIntExact(long value)
返回 long 参数的值;
如果值溢出int,则int 。
|
static double |
toRadians(double angdeg)
将以度为单位的角度转换为以弧度测量的大致相等的角度。
|
static double |
ulp(double d)
返回参数的ulp的大小。
|
static float |
ulp(float f)
返回参数的ulp的大小。
|
public static final double E
double
值比其他任何一个更接近
e ,自然对数的基数。
public static final double PI
double
值比任何其他的更接近
pi ,圆周长与其直径的比率。
public static double sin(double a)
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 以弧度表示的角度。
public static double cos(double a)
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 以弧度表示的角度。
public static double tan(double a)
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 以弧度表示的角度。
public static double asin(double a)
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 要返回正弦的值。
public static double acos(double a)
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 要返回的余弦值。
public static double atan(double a)
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 要返回的反正切值。
public static double toRadians(double angdeg)
angdeg
- 以度为单位的角度
angdeg
(弧度)。
public static double toDegrees(double angrad)
cos(toRadians(90.0))
正好等于0.0
。
angrad
- 以弧度表示的角度
angrad
的度数。
public static double exp(double a)
double
价值。
特殊情况:
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 提高
e的指数。
a
,其中
e是自然对数的基数。
public static double log(double a)
double
值。
特殊情况:
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 一个值
a
,自然对数为
a
。
public static double log10(double a)
double
的基数10对数值。
特殊情况:
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 一个值
a
。
public static double sqrt(double a)
double
值正确舍入的正平方根。
特殊情况:
double
最接近参数值的真实数学平方根值。
a
- 一个值。
a
。
如果参数为NaN或小于零,则结果为NaN。
public static double cbrt(double a)
double
值的多维数据集根。
对于正有限x
, cbrt(-x) == -cbrt(x)
;
也就是说,负值的多边形根是该值的大小的立方根的负数。
特殊情况:
计算结果必须在精确结果的1 ulp之内。
a
- 一个值。
a
。
public static double IEEEremainder(double f1, double f2)
f1 - f2
A-n,其中n是最接近商的精确算术值的数学整数f1/f2
,并且如果两个整数都同样接近f1/f2
,那么n是其中的偶数。
如果余数为零,其符号与第一个参数的符号相同。
特殊情况:
f1
- 股息。
f2
- 除数。
f1
除以
f2
。
public static double ceil(double a)
double
值,并等于数学整数。
特殊情况:
Math.ceil(x)
正是价值-Math.floor(-x)
。
a
- 一个值。
public static double floor(double a)
double
值,等于数学整数。
特殊情况:
a
- 一个值。
public static double rint(double a)
double
值,等于数学整数。
如果作为数学整数的两个double
值同样接近,则结果为均匀的整数值。
特殊情况:
a
- 一个
double
价值。
a
,等于一个数学整数。
public static double atan2(double y, double x)
x
, y
)为极坐标(R,θ-)。
该方法通过计算反正切计算的相位THETA y/x
PI到pi -在的范围内。
特殊情况:
double
值。 double
值。 double
值。 double
。 double
值。 double
值。 double
值。 double
值。 计算结果必须在精确结果的2 ulps之内。 结果必须是半单调的。
y
- 纵坐标坐标
x
- 横坐标坐标
public static double pow(double a, double b)
double
值进行表示。 (在前述的说明中,一个浮点值被认为是一个整数,当且仅当它是有限的,并且该方法的一个固定点ceil
,或等价地,该方法的一个固定点floor
。的值是一个固定的点的唯一方法,当且仅当将该方法应用于该值的结果等于该值时)。
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
a
- 基地。
b
- 指数。
a
b
。
public static int round(float a)
int
,其中int
四舍五入为正无穷大。
特殊情况:
Integer.MIN_VALUE
的值,则结果等于Integer.MIN_VALUE
的值。 Integer.MAX_VALUE
的值,则结果等于Integer.MAX_VALUE
的值。 a
- 要舍入为整数的浮点值。
int
值。
Integer.MAX_VALUE
,
Integer.MIN_VALUE
public static long round(double a)
long
,其中long
四舍五入为正无穷大。
特殊情况:
Long.MIN_VALUE
的值,则结果等于Long.MIN_VALUE
的值。 Long.MAX_VALUE
的值,则结果等于Long.MAX_VALUE
的值。 a
- 要舍入为
long
的浮点值。
long
值。
Long.MAX_VALUE
,
Long.MIN_VALUE
public static double random()
double
值为正号,大于等于0.0
,小于1.0
。
返回的值是从该范围(大约)均匀分布而伪随机选择的。
首先调用此方法时,它将创建一个新的伪随机数生成器,就像表达式一样
new java.util.Random()
此新的伪随机数生成器此后用于对该方法的所有调用,并在其他地方使用。
该方法正确同步,以允许多个线程正确使用。 然而,如果许多线程需要以很高的速率产生伪随机数,则可以减少每个线程的争用以拥有自己的伪随机数发生器。
double
大于或等于
0.0
并小于
1.0
。
Random.nextDouble()
public static int addExact(int x, int y)
int
。
x
- 第一个值
y
- 第二个值
ArithmeticException
- 如果结果溢出一个int
public static long addExact(long x, long y)
long
。
x
- 第一个值
y
- 第二个值
ArithmeticException
- 如果结果溢出了一个长的
public static int subtractExact(int x, int y)
int
。
x
- 第一个值
y
- 从第一个值减去的第二个值
ArithmeticException
- 如果结果溢出一个int
public static long subtractExact(long x, long y)
long
。
x
- 第一个值
y
- 从第一个值减去的第二个值
ArithmeticException
- 如果结果溢出了很长时间
public static int multiplyExact(int x, int y)
int
。
x
- 第一个值
y
- 第二个值
ArithmeticException
- 如果结果溢出一个int
public static long multiplyExact(long x, long y)
long
。
x
- 第一个值
y
- 第二个值
ArithmeticException
- 如果结果溢出了很长时间
public static int incrementExact(int a)
int
。
a
-
a
的值
ArithmeticException
- 如果结果溢出一个int
public static long incrementExact(long a)
long
。
a
-
a
的值
ArithmeticException
- 如果结果溢出很长
public static int decrementExact(int a)
int
。
a
-
a
的值
ArithmeticException
- 如果结果溢出一个int
public static long decrementExact(long a)
long
。
a
-
a
的值
ArithmeticException
- 如果结果溢出很长
public static int negateExact(int a)
int
。
a
- 否定的值
ArithmeticException
- 如果结果溢出一个int
public static long negateExact(long a)
long
。
a
- 否定的值
ArithmeticException
- 如果结果溢出了很长时间
public static int toIntExact(long value)
long
参数的值;
如果值溢出int,则int
。
value
- 长价值
ArithmeticException
- 如果
argument
溢出一个int
public static int floorDiv(int x, int y)
int
值。
有一个特殊情况,如果股息为Integer.MIN_VALUE ,除数为-1
,则发生整数溢出,结果等于Integer.MIN_VALUE
。
正常整数除法在四舍五入方式(截断)下运行。 这个操作代替在向下的无穷大(倒圆)舍入模式下。 当精确结果为负时,地板舍入模式提供与截断不同的结果。
floorDiv
和/
操作符的结果是一样的。 floorDiv(4, 3) == 1
和(4 / 3) == 1
。 floorDiv
返回小于或等于商的整数, /
操作符返回最接近零的整数。 floorDiv(-4, 3) == -2
,而(-4 / 3) == -1
。 x
- 股息
y
- 除数
int
值。
ArithmeticException
- 如果除数
y
为零
floorMod(int, int)
,
floor(double)
public static long floorDiv(long x, long y)
long
值。
有一个特殊情况,如果股息为Long.MIN_VALUE ,除数为-1
,则发生整数溢出,结果等于Long.MIN_VALUE
。
正常整数除法在四舍五入方式(截断)下运行。 这个操作代替在向下的无穷大(倒圆)舍入模式下。 当精确结果为负时,地板舍入模式提供与截断不同的结果。
例如,参见floorDiv(int, int)
。
x
- 股息
y
- 除数
long
值。
ArithmeticException
- 如果除数
y
为零
floorMod(long, long)
,
floor(double)
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
floorMod
和%
操作符之间的值之间的%
是由于floorDiv之间的floorDiv
返回整数小于或等于商, /
运算符返回最接近零的整数。
例子:
floorMod
和%
操作符的结果是一样的。 floorMod(4, 3) == 1
; 和(4 % 3) == 1
%
运算符不同。 floorMod(+4, -3) == -2
; 和(+4 % -3) == +1
floorMod(-4, +3) == +2
; 和(-4 % +3) == -1
floorMod(-4, -3) == -1
; 和(-4 % -3) == -1
如果参数的符号未知,并且需要正模数,则可以计算为(floorMod(x, y) + abs(y)) % abs(y)
。
x
- 股息
y
- 除数
x - (floorDiv(x, y) * y)
ArithmeticException
- 如果除数
y
为零
floorDiv(int, int)
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
例如,参见floorMod(int, int)
。
x
- 股息
y
- 除数
x - (floorDiv(x, y) * y)
ArithmeticException
- 如果除数
y
为零
floorDiv(long, long)
public static int abs(int a)
a
- 绝对值要确定的参数
public static long abs(long a)
a
- 要确定其绝对值的参数
public static float abs(float a)
float
值的绝对值。
如果参数不为负,则返回参数。
如果参数为负,则返回参数的否定。
特殊情况:
Float.intBitsToFloat(0x7fffffff & Float.floatToIntBits(a))
a
- 绝对值要确定的参数
public static double abs(double a)
double
值的绝对值。
如果参数不为负,则返回参数。
如果参数为负,则返回参数的否定。
特殊情况:
Double.longBitsToDouble((Double.doubleToLongBits(a)<<1)>>>1)
a
- 绝对值要确定的参数
public static int max(int a, int b)
a
- 一个论据。
b
- 另一个论点。
a
和
b
。
public static long max(long a, long b)
a
- 一个论据。
b
- 另一个论点。
a
和
b
。
public static float max(float a, float b)
float
值中的较大值。
也就是说,结果是更接近正无穷大的论据。
如果参数的值相同,结果是相同的值。
如果任一值为NaN,则结果为NaN。
与数值比较运算符不同,该方法认为负零严格小于正零。
如果一个参数为正零,另一个为负,结果为正零。
a
- 一个论据。
b
- 另一个论点。
a
和
b
。
public static double max(double a, double b)
double
值中的较大值。
也就是说,结果是更接近正无穷大的论据。
如果参数的值相同,结果是相同的值。
如果任一值为NaN,则结果为NaN。
与数值比较运算符不同,该方法认为负零严格小于正零。
如果一个参数为正零,另一个为负,结果为正零。
a
- 一个论据。
b
- 另一个论点。
a
和
b
。
public static int min(int a, int b)
a
- 一个论点。
b
- 另一个论点。
a
和
b
。
public static long min(long a, long b)
a
- 一个论点。
b
- 另一个参数。
a
和
b
。
public static float min(float a, float b)
float
值中的较小值。
也就是说,结果是更接近负无穷大的值。
如果参数的值相同,结果是相同的值。
如果任一值为NaN,则结果为NaN。
与数值比较运算符不同,该方法认为负零严格小于正零。
如果一个参数为正零,另一个为负零,结果为负零。
a
- 一个论点。
b
- 另一个论点。
a
和
b
。
public static double min(double a, double b)
double
的较小值。
也就是说,结果是更接近负无穷大的值。
如果参数的值相同,结果是相同的值。
如果任一值为NaN,则结果为NaN。
与数值比较运算符不同,该方法认为负零严格小于正零。
如果一个参数为正零,另一个为负零,结果为负零。
a
- 一个论据。
b
- 另一个论点。
a
和
b
。
public static double ulp(double d)
double
值的最后一个double
是这个浮点值和double
值之间的正距离,其值越大。
请注意,对于非NaN x , ulp(-x) == ulp(x)
。
特殊情况:
Double.MIN_VALUE
。 Double.MAX_VALUE
,则结果等于2 971 。 d
- 要返回ulp的浮点值
public static float ulp(float f)
float
的最后一个float
是这个浮点值和float
值之间的正距离,其值越大。
请注意,对于非NaN x , ulp(-x) == ulp(x)
。
特殊情况:
Float.MIN_VALUE
。 Float.MAX_VALUE
,则结果等于2 104 。 f
- 要返回ulp的浮点值
public static double signum(double d)
特殊情况:
d
- 要返回其
d
的浮点值
public static float signum(float f)
特殊情况:
f
- 要返回其
f
的浮点值
public static double sinh(double x)
double
值。
x的双曲正弦定义为( e x -e -x )/ 2,其中e为Euler's number 。
特殊情况:
计算结果必须在精确结果2.5 ul以内。
x
- 要返回双曲正弦的数字。
x
。
public static double cosh(double x)
double
值。
x的双曲余弦被定义为( e x + e -x )/ 2,其中e是Euler's number 。
特殊情况:
1.0
。 计算结果必须在精确结果2.5 ul以内。
x
- 要返回双曲余弦的数字。
x
。
public static double tanh(double x)
double
值的双曲正切值。
x的双曲正切定义为( e x -e -x )/( e x + e -x ),换句话说, sinh(x) / cosh(x) 。
请注意,确切的tanh的绝对值始终小于1。
特殊情况:
+1.0
。 -1.0
。 计算结果必须在精确结果2.5 ul以内。 任何有限输入的tanh
的结果必须具有小于或等于1的绝对值。请注意,一旦tanh的确切结果在±1的极限值的ulp的1/2内,正确签名± 1.0
应该退回
x
- 要返回其双曲正切的数字。
x
。
public static double hypot(double x, double y)
特殊情况:
计算结果必须在精确结果的1 ulp之内。 如果一个参数保持不变,则其他参数的结果必须是半单调的。
x
- 一个值
y
- 一个值
public static double expm1(double x)
expm1(x)
+ 1的确切总和更接近于e x的真实结果,而不是exp(x)
。
特殊情况:
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。 任何有限输入的expm1
的结果必须大于或等于-1.0
。 请注意,一旦e x
的确切结果在限制值-1的1/2 ulp内,则应返回-1.0
。
x
- 在
e
x
-1的计算中提高
e的指数。
x
- 1。
public static double log1p(double x)
x
,结果log1p(x)
更接近LN(1 +的真实结果x
)比的浮点评价log(1.0+x)
。
特殊情况:
计算结果必须在精确结果的1 ulp之内。 结果必须是半单调的。
x
- 一个值
x
+ 1),自然对数为
x
+ 1
public static double copySign(double magnitude, double sign)
StrictMath.copySign
方法不同,此方法不需要将NaN sign
参数视为正值;
允许实现将一些NaN参数视为正值,其他NaN参数为负,以允许更高的性能。
magnitude
- 提供结果大小的参数
sign
- 提供结果符号的参数
magnitude
,标志
sign
。
public static float copySign(float magnitude, float sign)
StrictMath.copySign
方法不同,此方法不需要将NaN sign
参数视为正值;
允许实现将一些NaN参数视为正值,其他NaN参数为负,以允许更高的性能。
magnitude
- 提供结果大小的参数
sign
- 提供结果符号的参数
magnitude
和符号
sign
。
public static int getExponent(float f)
float
。
特殊情况:
Float.MAX_EXPONENT
+ 1。 Float.MIN_EXPONENT
-1。 f
- 一个
float
价值
public static int getExponent(double d)
double
。
特殊情况:
Double.MAX_EXPONENT
+ 1。 Double.MIN_EXPONENT
-1。 d
- 一个
double
价值
public static double nextAfter(double start, double direction)
特殊情况:
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
。
public static float nextAfter(float start, double direction)
特殊情况:
direction
的值。 start
为± Float.MIN_VALUE
,并且direction
具有使结果应具有较小幅度的值,则返回与start
相同符号的零。 start
是无限的, direction
具有这样的结果应该有一个小幅度的值Float.MAX_VALUE
具有相同的符号start
返回。 start
等于± Float.MAX_VALUE
,并且direction
具有使得结果应该具有较大幅度的值,则返回与start
相同符号的无穷大。 start
- 起始浮点值
direction
表明其价值-
start
的邻居或
start
应返回
start
附近的
start
在direction的
direction
。
public static double nextUp(double d)
d
的浮点值。
这种方法语义上nextAfter(d, Double.POSITIVE_INFINITY)
;
然而,一个nextUp
实现可能比其等效的nextAfter
调用运行速度更快。
特殊情况:
Double.MIN_VALUE
d
- 起始浮点值
public static float nextUp(float f)
f
相邻的浮点值。
这种方法语义上nextAfter(f, Float.POSITIVE_INFINITY)
;
但是,一个nextUp
实现可能运行速度比其等效的nextAfter
调用。
特殊情况:
Float.MIN_VALUE
f
- 起始浮点值
public static double nextDown(double d)
d
的浮点值。
这种方法在语义上相当于nextAfter(d, Double.NEGATIVE_INFINITY)
;
但是,一个nextDown
实现可能比其等效的nextAfter
调用运行速度更快。
特殊情况:
-Double.MIN_VALUE
d
- 起始浮点值
public static float nextDown(float f)
f
的浮点值。
这种方法在语义上相当于nextAfter(f, Float.NEGATIVE_INFINITY)
;
但是,一个nextDown
实现可能运行速度比其等效的nextAfter
调用。
特殊情况:
-Float.MIN_VALUE
f
- 起始浮点值
public static double scalb(double d, int scaleFactor)
d
2 scaleFactor
四舍五入,好像由单个正确四舍五入的浮点乘以双重值集合的成员执行。
有关浮点值集的讨论,请参阅Java语言规范。
如果结果的指数在Double.MIN_EXPONENT
和Double.MAX_EXPONENT
之间,那么答案是准确计算的。
如果结果的指数大于Double.MAX_EXPONENT
,则返回无限大。
请注意,如果结果异常,则精度可能会丢失;
也就是说,当scalb(x, n)
是次正常时, scalb(scalb(x, n), -n)
可能不等于x 。
当结果为非NaN时,结果与d
具有相同的符号。
特殊情况:
d
-
d
两个幂来缩放的号码。
scaleFactor
- 2的功率用于缩放
d
d
2
scaleFactor
public static float scalb(float f, int scaleFactor)
f
2 scaleFactor
四舍五入,就像一个正确圆形的浮点数乘以浮点值集合的成员一样。
有关浮点值集的讨论,请参阅Java语言规范。
如果结果的指数在Float.MIN_EXPONENT
和Float.MAX_EXPONENT
之间,那么答案是准确计算的。
如果结果的指数大于Float.MAX_EXPONENT
,则返回无限大。
请注意,如果结果异常,则精度可能会丢失;
也就是说,当scalb(x, n)
是次正常时, scalb(scalb(x, n), -n)
可能不等于x 。
当结果为非NaN时,结果与f
具有相同的符号。
特殊情况:
f
-
f
两个幂来缩放的数字。
scaleFactor
- 2的功率用于缩放
f
f
2
scaleFactor