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
结果溢出时。 对于其他算术运算,如除法,绝对值,递增,递减和否定溢出仅在特定的最小值或最大值发生时,应根据最小值或最大值进行检查。
Modifier and Type | Field and Description |
---|---|
static double |
E
double 值比任何其他
e更接近
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 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 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 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)
a
- 以弧度表示的角度。
public static double cos(double a)
a
- 以弧度表示的角度。
public static double tan(double a)
a
- 以弧度表示的角度。
public static double asin(double a)
a
- 要返回正弦的值。
public static double acos(double a)
a
- 要返回的余弦值。
public static double atan(double a)
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
价值。
特殊情况:
a
- 提高
e的指数。
a
,其中
e是自然对数的基数。
public static double log(double a)
double
值。
特殊情况:
a
- 一个值
a
,自然对数为
a
。
public static double log10(double a)
double
的基数10对数值。
特殊情况:
a
- 一个值
a
。
public static double sqrt(double a)
double
值正确舍入的正平方根。
特殊情况:
double
最接近参数值的真实数学平方根值。
a
- 一个值。
a
。
public static double cbrt(double a)
double
值的多维数据集根。
对于正有限x
, cbrt(-x) == -cbrt(x)
;
也就是说,负值的多边形根是该值的大小的立方根的负数。
特殊情况:
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
值,并等于一个数学整数。
特殊情况:
StrictMath.ceil(x)
正是价值-StrictMath.floor(-x)
。
a
- 一个值。
public static double floor(double a)
double
值,等于数学整数。
特殊情况:
a
- 一个值。
public static double rint(double a)
double
值,并且等于数学整数。
如果作为数学整数的两个double
值同样接近参数的值,则结果是均匀的整数值。
特殊情况:
a
- 一个值。
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
值。 y
- 纵坐标坐标
x
- 横坐标坐标
public static double pow(double a, double b)
double
值进行表示。 (在前述的说明中,一个浮点值被认为是一个整数,当且仅当它是有限的,并且该方法的一个固定点ceil
,或等价地,该方法的一个固定点floor
。的值是一个固定的点的唯一方法,当且仅当将该方法应用于该值的结果等于该值时)。
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
Math.addExact(int,int)
public static long addExact(long x, long y)
long
。
x
- 第一个值
y
- 第二个值
ArithmeticException
- 如果结果溢出很长
Math.addExact(long,long)
public static int subtractExact(int x, int y)
int
。
x
- 第一个值
y
- 从第一个值减去的第二个值
ArithmeticException
- 如果结果溢出一个int
Math.subtractExact(int,int)
public static long subtractExact(long x, long y)
long
。
x
- 第一个值
y
- 从第一个值减去的第二个值
ArithmeticException
- 如果结果溢出了很长时间
Math.subtractExact(long,long)
public static int multiplyExact(int x, int y)
int
。
x
- 第一个值
y
- 第二个值
ArithmeticException
- 如果结果溢出一个int
Math.multiplyExact(int,int)
public static long multiplyExact(long x, long y)
long
。
x
- 第一个值
y
- 第二个值
ArithmeticException
- 如果结果溢出很长
Math.multiplyExact(long,long)
public static int toIntExact(long value)
long
参数的值;
如果值溢出int,则int
。
value
- 长价值
ArithmeticException
- 如果
argument
溢出一个int
Math.toIntExact(long)
public static int floorDiv(int x, int y)
int
值。
有一个特殊情况,如果股息为Integer.MIN_VALUE ,除数为-1
,则发生整数溢出,结果等于Integer.MIN_VALUE
。
参见Math.floorDiv
的例子和与整数除法/
运算符的比较。
x
- 股息
y
- 除数
int
值。
ArithmeticException
- 如果除数
y
为零
Math.floorDiv(int, int)
,
Math.floor(double)
public static long floorDiv(long x, long y)
long
值。
有一个特殊情况,如果股息为Long.MIN_VALUE ,除数为-1
,则发生整数溢出,结果等于Long.MIN_VALUE
。
参见Math.floorDiv
的例子,并与整数除法/
运算符进行比较。
x
- 股息
y
- 除数
long
值。
ArithmeticException
- 如果除数
y
为零
Math.floorDiv(long, long)
,
Math.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
有关示例和%
运算符的比较,请参阅Math.floorMod
。
x
- 股息
y
- 除数
x - (floorDiv(x, y) * y)
ArithmeticException
- 如果除数
y
为零
Math.floorMod(int, int)
,
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
参见Math.floorMod
的例子和%
运算符的比较。
x
- 股息
y
- 除数
x - (floorDiv(x, y) * y)
ArithmeticException
- 如果除数
y
为零
Math.floorMod(long, long)
,
floorDiv(long, long)
public static int abs(int a)
int
值的绝对值。
如果参数不为负,则返回参数。
如果参数为负,则返回参数的否定。
注意,如果参数等于Integer.MIN_VALUE
的值,则最负数可表示int
值,结果是相同的值,即为负数。
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
较大
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 。
特殊情况:
x
- 要返回双曲正弦的数字。
x
。
public static double cosh(double x)
double
值。
x的双曲余弦被定义为( e x + e -x )/ 2,其中e是Euler's number 。
特殊情况:
1.0
。 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
。 x
- 要返回其双曲正切的数字。
x
。
public static double hypot(double x, double y)
特殊情况:
x
- 一个值
y
- 一个值
public static double expm1(double x)
expm1(x)
+ 1更接近E X比的真实结果exp(x)
。
特殊情况:
x
- 在
e
x
-1的计算中提高
e的指数。
x
- 1。
public static double log1p(double x)
x
,结果log1p(x)
更接近LN(1 +的真实结果x
)比的浮点评价log(1.0+x)
。
特殊情况:
x
- 一个值
x
+ 1),自然对数为
x
+ 1
public static double copySign(double magnitude, double sign)
sign
参数总是被视为正面。
magnitude
- 提供结果大小的参数
sign
- 提供结果符号的参数
magnitude
,标志
sign
。
public static float copySign(float magnitude, float sign)
sign
参数总是被视为正面。
magnitude
- 提供结果大小的参数
sign
- 提供结果符号的参数
magnitude
,标志
sign
。
public static int getExponent(float f)
float
。
特殊情况:
Float.MAX_EXPONENT
+ 1。 Float.MIN_EXPONENT
-1。 f
- a
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
具有使得结果应该具有较小幅度的值,则返回具有与start相同的符号的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
具有使结果应该具有较小幅度的值,则返回具有与start相同的符号的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