|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.lang.StrictMath
public final class StrictMath
StrictMath 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
为了确保 Java 程序的可移植性,此包中的某些数学函数的定义需要与某些已发布的算法生成相同的结果。这些算法可以从众所周知的网络库 netlib 以 fdlibm(“Freely Distributable Math Library,免费发布的数学库”)包的形式获得。这些算法都是用 C 编程语言编写的,在使用所有遵循 Java 浮点算法规则的浮点运算执行时也能够被理解。
Java 数学库是根据 fdlibm 5.3 版定义的。其中 fdlibm 使用“IEEE 754 核心函数”版本(位于名字以字母 e 开头的文件中)为一个函数提供了多个定义(如 acos)。需要 fdlibm 语义的方法有 sin、cos、tan、asin、acos、atan、exp、log、log10、cbrt、atan2、pow、sinh、cosh、tanh、hypot、expm1 和 log1p。
| 字段摘要 | |
|---|---|
static double |
E
比任何其他值都更接近 e(即自然对数的底数)的 double 值。 |
static double |
PI
比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。 |
| 方法摘要 | |
|---|---|
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 double |
asin(double a)
返回值的反正弦;返回角的范围在 -pi/2 到 pi/2 之间。 |
static double |
atan(double a)
返回值的反正切;返回角的范围在 -pi/2 到 pi/2 之间。 |
static double |
atan2(double y,
double x)
将矩形坐标 ( x, y) 转换成极坐标 (r, theta),并返回角 theta。 |
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)
返回 ex -1。 |
static double |
floor(double a)
返回最大的(最接近正无穷大) double 值,该值小于等于参数,并等于某个整数。 |
static int |
getExponent(double d)
返回 double 表示形式中使用的无偏指数。 |
static int |
getExponent(float f)
返回 float 表示形式中使用的无偏指数。 |
static double |
hypot(double x,
double y)
返回 sqrt(x2 +y2),没有中间溢出或下溢。 |
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 double |
nextAfter(double start,
double direction)
返回第一个参数和第二个参数之间与第一个参数相邻的浮点数。 |
static float |
nextAfter(float start,
double direction)
返回第一个参数和第二个参数之间与第一个参数相邻的浮点数。 |
static double |
nextUp(double d)
返回 d 和正无穷大之间与 d 相邻的浮点值。 |
static float |
nextUp(float f)
返回 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,其舍入方式如同将一个正确舍入的浮点值乘到 double 值集合中的一个值。 |
static float |
scalb(float f,
int scaleFactor)
返回 f ×
2scaleFactor,其舍入方式如同将一个正确舍入的浮点值乘到 float 值集合中的一个值。 |
static double |
signum(double d)
返回参数的符号函数;如果参数为 0,则返回 0;如果参数大于 0,则返回 1.0;如果参数小于 0,则返回 -1.0。 |
static float |
signum(float f)
返回参数的符号函数;如果参数为 0,则返回 0;如果参数大于 0,则返回 1.0f;如果参数小于 0,则返回 -1.0f。 |
static double |
sin(double a)
返回角的三角正弦。 |
static double |
sinh(double x)
返回 double 值的双曲线正弦。 |
static double |
sqrt(double a)
返回正确舍入的 double 值的正平方根。 |
static double |
tan(double a)
返回角的三角正切。 |
static double |
tanh(double x)
返回 double 值的双曲线正切。 |
static double |
toDegrees(double angrad)
将用弧度表示的角转换为近似相等的用角度表示的角。 |
static double |
toRadians(double angdeg)
将用角度表示的角转换为近似相等的用弧度表示的角。 |
static double |
ulp(double d)
返回参数的 ulp 大小。 |
static float |
ulp(float f)
返回参数的 ulp 大小。 |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 字段详细信息 |
|---|
public static final double E
double 值。
public static final double PI
double 值。
| 方法详细信息 |
|---|
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 - 用角度表示的角。
angrad 用弧度表示的值。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 值的自然对数(底数为 e)。特殊情况如下:
a - 一个值。
a 的值,即 a 的自然对数。public static double log10(double a)
double 值的底数为 10 的对数。特殊情况如下:
a - 一个值
a 的底数为 10 的对数。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 × n,其中 n 是最接近商 f1/f2 准确算术值的整数,如果两个整数都同样接近 f1/f2,那么 n 是其中的偶数。如果余数是 0,则它的符号与第一个参数的符号相同。特殊情况如下:
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),并返回角 theta。该方法通过计算 y/x 的反正切值来计算相角 theta,范围为从 -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 - 指数。
ab。public static int round(float a)
int。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 int 类型。换句话说,结果等于以下表达式的值:
(int)Math.floor(a + 0.5f)
特殊情况如下:
Integer.MIN_VALUE 的值,那么结果等于 Integer.MIN_VALUE 的值。
Integer.MAX_VALUE 的值,那么结果等于 Integer.MAX_VALUE 的值。
a - 要舍入为整数的浮点值。
int 值的参数值。Integer.MAX_VALUE,
Integer.MIN_VALUEpublic static long round(double a)
long。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long 类型。换句话说,结果等于以下表达式的值:
(long)Math.floor(a + 0.5d)
特殊情况如下:
Long.MIN_VALUE 的值,那么结果等于 Long.MIN_VALUE 的值。
Long.MAX_VALUE 的值,那么结果等于 Long.MAX_VALUE 的值。
a - 舍入为 long 的浮点值。
long 值的参数值。Long.MAX_VALUE,
Long.MIN_VALUEpublic static double random()
double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在上述范围内(近似)均匀分布。
第一次调用该方法时,它将创建一个新的伪随机数生成器,与以下表达式完全相同
。之后,新的伪随机数生成器可用于此方法的所有调用,但不能用于其他地方。new java.util.Random
此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。
0.0 且小于 1.0 的伪随机 double 数。Random.nextDouble()public static int abs(int a)
int 值的绝对值。如果参数不是负数,则返回该参数。如果参数为负数,则返回该参数的相反数。
注意,如果参数等于 Integer.MIN_VALUE 的值,即能够表示的最小负 int 值,那么结果与该值相同且为负。
a - 要确定绝对值的参数。
Integer.MIN_VALUEpublic static long abs(long a)
long 值的绝对值。如果参数不是负数,则返回该参数。如果参数为负数,则返回该参数的相反数。
注意,如果参数等于 Long.MIN_VALUE 的值,即能够表示的最小负 long 值,那么结果与该值相同且为负。
a - 要确定绝对值的参数。
Long.MIN_VALUEpublic 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)
int 值中较大的一个。也就是说,结果为更接近 Integer.MAX_VALUE 值的参数。如果参数值相同,那么结果也是同一个值。
a - 参数。b - 另一个参数。
a 和 b 中大的较大者。Long.MAX_VALUE
public static long max(long a,
long b)
long 值中较大的一个。也就是说,结果为更接近 Long.MAX_VALUE 值的参数。如果参数值相同,那么结果也是同一个值。
a - 参数。b - 另一个参数。
a 和 b 中的较大者。Long.MAX_VALUE
public static float max(float a,
float b)
float 值中较大的一个。也就是说,结果为更接近正无穷大的参数。如果参数值相同,那么结果也是同一个值。如果任一值为 NaN,那么结果为 NaN。与数值比较运算不同,此方法认为负 0 严格小于正 0。如果一个参数为正 0,另一个参数为负 0,那么结果为正 0。
a - 参数。b - 另一个参数。
a 和 b 中的较大者。
public static double max(double a,
double b)
double 值中较大的一个。也就是说,结果为更接近正无穷大的参数。如果参数值相同,那么结果也是同一个值。如果任一值为 NaN,那么结果为 NaN。与数值比较运算不同,此方法认为负 0 严格小于正 0。如果一个参数为正 0,另一个参数为负 0,那么结果为正 0。
a - 参数。b - 另一个参数。
a 和 b 中的较大者。
public static int min(int a,
int b)
int 值中较小的一个。也就是说,结果为更接近 Integer.MIN_VALUE 值的参数。如果参数值相同,那么结果也是同一个值。
a - 参数。b - 另一个参数。
a 和 b 中的较小者。Long.MIN_VALUE
public static long min(long a,
long b)
long 值中较小的一个。也就是说,结果为更接近 Long.MIN_VALUE 值的参数。如果参数值相同,那么结果也是同一个值。
a - 参数。b - 另一个参数。
a 和 b 中的较小者。Long.MIN_VALUE
public static float min(float a,
float b)
float 值中较小的一个。也就是说,结果为更接近负无穷大的值。如果参数值相同,那么结果也是同一个值。如果任一值为 NaN,那么结果为 NaN。与数值比较运算不同,此方法认为负 0 严格小于正 0。如果一个参数为正 0,另一个参数为负 0,那么结果为负 0。
a - 参数。b - 另一个参数。
a 和 b 中的较小者。
public static double min(double a,
double b)
double 值中较小的一个。也就是说,结果为更接近负无穷大的值。如果参数值相同,那么结果也是同一个值。如果任一值为 NaN,那么结果为 NaN。与数值比较运算不同,此方法认为负 0 严格小于正 0。如果一个参数为正 0,另一个参数为负 0,那么结果为负 0。
a - 参数。b - 另一个参数。
a 和 b 中的较小者。public static double ulp(double d)
double 值的 ulp 是此浮点值与下一个数值较大的 double 值之间的正距离。注意,对于非 NaN x,ulp(-x) == ulp(x)。
特殊情况如下:
Double.MIN_VALUE。
Double.MAX_VALUE,那么结果等于 2971。
d - 要返回其 ulp 的浮点值。
public static float ulp(float f)
float 值的 ulp 是该浮点值与下一个数值较大的 float 值之间的正距离。注意,对于非 NaN x,ulp(-x) == ulp(x)。
特殊情况如下:
Float.MIN_VALUE。
Float.MAX_VALUE,那么结果等于 2104。
d - 要返回其 ulp 的浮点值。
public static double signum(double d)
特殊情况如下:
d - 要返回其符号函数的浮点值。
public static float signum(float f)
特殊情况如下:
d - 要返回其符号函数的浮点值。
public static double sinh(double x)
double 值的双曲线正弦。x 的双曲线正弦的定义是(ex - e-x)/2,其中e 是 欧拉数。
特殊情况如下:
x - 要返回其双曲线正弦的数。
x 的双曲线正弦。public static double cosh(double x)
double 值的双曲线余弦。x 的双曲线余弦的定义是 (ex + e-x)/2,其中e 是欧拉数。
特殊情况如下:
1.0。
x - 要返回其双曲线余弦的数。
x 的双曲线余弦。public static double tanh(double x)
double 值的双曲线正切。x 的双曲线正切的定义是 (ex - e-x)/(ex + e-x),即 sinh(x)/cosh(x)。注意,准确的双曲正切绝对值始终小于 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 的准确和比 exp(x) 更接近 ex 的真实结果。
特殊情况如下:
x - 在 ex -1 的计算中 e 的指数。
x - 1。public static double log1p(double x)
x 值,log1p(x) 的结果比 log(1.0+x) 的浮点计算结果更接近 ln(1 + 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 - 一个 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 小的数值,那么将返回 0,并带有与 start 相同的符号。
start 为无穷大,而 direction 的值要求结果为一个比 start 小的数值,则返回 Double.MAX_VALUE,并带有与 start 相同的符号。
start 等于 ±Double.MAX_VALUE,而 direction 的值要求结果为一个比 start 大的数值,则返回无穷大,并带有与 start 相同的符号。
start - 起始浮点值。direction - 一个值,指示应返回 start 的某个邻数还是 start。
start 和 direction 之间与 start 相邻的浮点数。
public static float nextAfter(float start,
double direction)
特殊情况如下:
direction 的值。
start 为 ±Float.MIN_VALUE,而 direction 的值要求结果为一个比 start 小的数值,那么将返回 0,并带有与 start 相同的符号。
start 为无穷大,而 direction 的值要求结果为一个比 start 小的数值,则返回 Float.MAX_VALUE,并带有与 start 相同的符号。
start 等于 ±Float.MAX_VALUE,而 direction 的值要求结果为一个比 start 大的数值,则返回无穷大,并带有与 start 相同的符号。
start - 起始浮点值direction - 一个值,指示应返回 start 的某个邻数还是 start。
start 和 direction 之间与 start 相邻的浮点数。public static double nextUp(double d)
d 和正无穷大之间与 d 相邻的浮点值。此方法在语义上等同于 nextAfter(d, Double.POSITIVE_INFINITY);但是,nextUp 实现的返回速度可能比其等价 nextAfter 调用快。
特殊情况如下:
Double.MIN_VALUE。
d - 起始浮点值
public static float nextUp(float f)
f 和正无穷大之间与 f 相邻的浮点值。此方法在语义上等同于 nextAfter(f, Float.POSITIVE_INFINITY);但是,nextUp 实现的返回速度可能比其等价 nextAfter 调用快。
特殊情况如下:
Float.MIN_VALUE
f - 起始浮点值
public static double scalb(double d,
int scaleFactor)
d ×
2scaleFactor,其舍入方式如同将一个正确舍入的浮点值乘到 double 值集合中的一个值。有关浮点值集合的讨论,请参阅 Java 语言规范。如果结果的指数在 Double.MIN_EXPONENT 和 Double.MAX_EXPONENT 之间,则可以正确地计算答案;如果结果的指数大于 Double.MAX_EXPONENT,则返回无穷大。注意,如果结果为 subnormal,则可能丢失精度;也就是说,scalb(x, n) 为 subnormal 时,scalb(scalb(x, n), -n) 可能不等于 x。结果为非 NaN 时,结果的符号将与 d 相同。
特殊情况如下:
d - 要使用 2 的次幂缩放的数。scaleFactor - 用来缩放 d 的 2 的次幂
d × 2scaleFactor
public static float scalb(float f,
int scaleFactor)
f ×
2scaleFactor,其舍入方式如同将一个正确舍入的浮点值乘到 float 值集合中的一个值。有关浮点值集合的讨论,请参阅 Java 语言规范。如果结果的指数在 Float.MIN_EXPONENT 和 Float.MAX_EXPONENT 之间,则可以正确地计算答案;如果结果的指数大于 Float.MAX_EXPONENT,则返回无穷大。注意,如果结果为 subnormal,则可能丢失精度;也就是说,scalb(x, n) 为 subnormal 时,scalb(scalb(x, n), -n) 可能不等于 x。结果为非 NaN 时,结果的符号将与 f 相同。
特殊情况如下:
f - 要使用 2 的次幂缩放的数。scaleFactor - 用来缩放 f 的 2 的次幂
f × 2scaleFactor
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。