JavaTM 2 Platform
Standard Ed. 5.0

java.lang
类 StrictMath

java.lang.Object
  继承者 java.lang.StrictMath

public final class StrictMath
extends Object

StrictMath 包含了用于执行基本数字运算的方法,如基本指数、对数、平方根和三角函数。

为了确保 Java 程序的可移植性,该包中的某些数学函数的定义需要与某些已公布的算法生成相同的结果。这些算法可用作包 fdlibm(“免费发布的数学库”),在众所周知的网络库 netlib 中使用。这些算法都是用 C 编程语言编写的,并且因为它们能遵从 Java 浮点算法的规则,与所有浮点运算一同执行,从而被人们充分理解。

Java 数学库是根据 fdlibm 版本 5.3 定义的。其中 fdlibm 使用“IEEE 754 核心函数”版本(位于名字以字母 e 开头的文件中)提供了函数的多个定义(如 acos)。需要 fdlibm 语义的方法是 sincostanasinacosatanexploglog10cbrtatan2powsinhcoshtanhhypotexpm1log1p

从以下版本开始:
1.3

字段摘要
static double E
          double 值比任何其他值更接近于 e,即自然对数的底数。
static double PI
          double 值比任何其他值更接近于 pi,即圆的周长与直径之比。
 
方法摘要
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)
          将矩形坐标 (xy) 转换成极坐标 (r, theta)。
static double cbrt(double a)
          返回 double 值的立方根。
static double ceil(double a)
          返回最小的(最接近负无穷大)double 值,该值大于或等于参数,并且是整数。
static double cos(double a)
          返回角的三角余弦。
static double cosh(double x)
          返回 double 值的双曲线余弦。
static double exp(double a)
          返回欧拉数 edouble 次幂的值。
static double expm1(double x)
          返回 ex -1。
static double floor(double a)
          返回最大的(最接近正无穷大)double 值,该值小于或等于参数,并且是整数。
static double hypot(double x, double y)
          返回 sqrt(x2 +y2),没有中间溢出或下溢。
static double IEEEremainder(double f1, double f2)
          按照 IEEE 754 标准的规定,对两个参数进行余数运算。
static double log(double a)
          返回(底数是 edouble 值的自然对数。
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 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 signum(double d)
          返回参数的符号函数;如果参数是零,则返回零;如果参数大于零,则返回 1.0;如果参数小于零,则返回 -1.0。
static float signum(float f)
          返回参数的符号函数;如果参数是零,则返回零;如果参数大于零,则返回 1.0f;如果参数小于零,则返回 -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
 

字段详细信息

E

public static final double E
double 值比任何其他值更接近于 e,即自然对数的底数。

另请参见:
常量字段值

PI

public static final double PI
double 值比任何其他值更接近于 pi,即圆的周长与直径之比。

另请参见:
常量字段值
方法详细信息

sin

public static double sin(double a)
返回角的三角正弦。特殊情况是:

参数:
a - 以弧度表示的角。
返回:
参数的正弦。

cos

public static double cos(double a)
返回角的三角余弦。特殊情况是:

参数:
a - 以弧度表示的角。
返回:
参数的余弦。

tan

public static double tan(double a)
返回角的三角正切。特殊情况是:

参数:
a - 以弧度表示的角。
返回:
参数的正切。

asin

public static double asin(double a)
返回角的反正弦,范围在 -pi/2 到 pi/2 之间。特殊情况是:

参数:
a - 要返回其反正弦的值。
返回:
参数的反正弦。

acos

public static double acos(double a)
返回角的反余弦,范围在 0.0 到 pi 之间。特殊情况是:

参数:
a - 要返回其反余弦的值。
返回:
参数的反余弦。

atan

public static double atan(double a)
返回角的反正切,范围在 -pi/2 到 pi/2 之间。特殊情况是:

参数:
a - 要返回其反正切的值。
返回:
参数的反正切。

toRadians

public static double toRadians(double angdeg)
将用度数测量的角转换为近似相等的用弧度测量的角。从度数到弧度的转换通常是不精确的。

参数:
angdeg - 用度数表示的角。
返回:
angrad 的弧度值。

toDegrees

public static double toDegrees(double angrad)
将用弧度测量的角转换为近似相等的用度数测量的角。从弧度到度数的转换通常是不精确的;用户 应该期望 cos(toRadians(90.0))0.0 精确相等。

参数:
angrad - 用弧度表示的角。
返回:
angrad 的角度值。

exp

public static double exp(double a)
返回欧拉数 edouble 次幂的值。特殊情况是:

参数:
a - e 的指数。
返回:
ea,其中 e 是自然对数的底数。

log

public static double log(double a)
返回(底数是 edouble 值的自然对数。特殊情况是:

参数:
a - 一个值。
返回:
lna 的值,a 的自然对数。

log10

public static double log10(double a)
返回 double 值的底数为 10 的对数。特殊情况是:

参数:
a - 一个值
返回:
a 的底数为 10 的对数。
从以下版本开始:
1.5

sqrt

public static double sqrt(double a)
返回正确舍入的 double 值的平方根。特殊情况是: 否则,结果是最接近该参数值的真实数学平方根的 double 值。

参数:
a - 一个值。
返回:
a 的正平方根。

cbrt

public static double cbrt(double a)
返回 double 值的立方根。对于正有限值 xcbrt(-x) == -cbrt(x);也就是说,负值的立方根是该值大小的负立方根。特殊情况是:

参数:
a - 一个值。
返回:
a 的立方根。
从以下版本开始:
1.5

IEEEremainder

public static double IEEEremainder(double f1,
                                   double f2)
按照 IEEE 754 标准的规定,对两个参数进行余数运算。余数的算术值等于 f1 - f2 × n,其中 n 是最接近 f1/f2 的商的准确算术值的整数,如果两个整数都同样接近 f1/f2,那么 n 是其中的偶数。如果余数是零,则它的符号与第一个参数的符号相同。特殊情况是:

参数:
f1 - 被除数。
f2 - 除数。
返回:
f1 除以 f2 的余数。

ceil

public static double ceil(double a)
返回最小的(最接近负无穷大)double 值,该值大于或等于参数,并且是整数。特殊情况是: 注意,StrictMath.ceil(x) 的值与 -StrictMath.floor(-x) 的值完全一样。

参数:
a - 一个值。
返回:
最小(最接近负无穷大)浮点值,该值大于或等于该参数,并且等于某个整数。

floor

public static double floor(double a)
返回最大的(最接近正无穷大)double 值,该值小于或等于参数,并且是整数。特殊情况是:

参数:
a - 一个值。
返回:
最大(最接近正无穷大)浮点值,该值小于或等于该参数,并且等于某个整数。

rint

public static double rint(double a)
返回其值最接近参数并且是整数的 double 值。如果两个整数的 double 值都同样接近于参数值,那么结果取偶数。特殊情况是:

参数:
a - 一个值。
返回:
最接近 a 的整数浮点值。

atan2

public static double atan2(double y,
                           double x)
将矩形坐标 (xy) 转换成极坐标 (r, theta)。该方法通过计算 y/x 的反正切值来计算相 (phase) theta,范围为从 -pipi。特殊情况是:

参数:
y - 纵坐标
x - 横坐标
返回:
与笛卡儿坐标中点 (xy) 对应的极坐标中点 (rtheta) 的 theta 部分。

pow

public static double pow(double a,
                         double b)
返回第一个参数的第二个参数次幂的值。特殊情况是:

(在前面的描述中,当且仅当浮点数为有限值并且是方法 ceil 的定点数,或者是方法 floor 的定点数时,才可以认为浮点值是整数。当且仅当将方法应用到值的结果等于该值时,该值才是带有一个参数的方法的定点值。)

参数:
a - 底数。
b - 指数。
返回:
ab

round

public static int round(float a)
返回最接近参数的 int。通过加上 1/2 将该结果舍入为整数,取结果的基数并强制转换为 int 类型。换句话说,结果等于以下表达式的值:

(int)Math.floor(a + 0.5f)

特殊情况是:

参数:
a - 要舍入为整数的浮点值。
返回:
舍入为最接近的 int 值的参数值。
另请参见:
Integer.MAX_VALUE, Integer.MIN_VALUE

round

public static long round(double a)
返回最接近参数的 long。通过加上 1/2 将该结果舍入为整数,取结果的基数并强制转换为 long 类型。换句话说,结果等于以下表达式的值:

(long)Math.floor(a + 0.5d)

特殊情况是:

参数:
a - 舍入为 long 的浮点值。
返回:
舍入为最接近的 long 值的参数值。
另请参见:
Long.MAX_VALUE, Long.MIN_VALUE

random

public static double random()
返回带有正号的 double 值,大于或等于 0.0,小于 1.0。返回值是一个伪随机选择的数,在上述范围内(大致)均匀分布。

第一次调用该方法时,它将创建一个新的伪随机数生成器,正如通过表达式

new java.util.Random
一样。之后,该新的伪随机数生成器可用于针对该方法的所有调用,但不能在其他地方使用。

在经过适当同步后,允许多个线程正确地使用该方法。然而,如果很多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己的伪随机数生成器的争用。

返回:
大于等于 0.0 但小于 1.0 的伪随机 double 数。
另请参见:
Random.nextDouble()

abs

public static int abs(int a)
返回 int 值的绝对值。如果参数不是负数,则返回该参数。如果参数是负数,则返回该参数的相反数。

注意,如果参数等于 Integer.MIN_VALUE 的值,即能够表示的最小负 int 值,则结果与该值相同且为负。

参数:
a - 要确定绝对值的参数。
返回:
参数的绝对值。
另请参见:
Integer.MIN_VALUE

abs

public static long abs(long a)
返回 long 值的绝对值。如果参数不是负数,则返回该参数。如果参数是负数,则返回该参数的相反数。

注意,如果参数等于 Long.MIN_VALUE 的值,即能够表示的最小负 long 值,则结果与该值相同且为负。

参数:
a - 要确定绝对值的参数。
返回:
参数的绝对值。
另请参见:
Long.MIN_VALUE

abs

public static float abs(float a)
返回 float 值的绝对值。如果参数不是负数,则返回该参数。如果参数是负数,则返回该参数的相反数。特殊情况是: 换句话说,结果等于以下表达式的值:

Float.intBitsToFloat(0x7fffffff & Float.floatToIntBits(a))

参数:
a - 要确定绝对值的参数。
返回:
参数的绝对值。

abs

public static double abs(double a)
返回 double 值的绝对值。如果参数不是负数,则返回该参数。如果参数是负数,则返回该参数的相反数。特殊情况是: 换句话说,结果等于以下表达式的值:

Double.longBitsToDouble((Double.doubleToLongBits(a)<<1)>>>1)

参数:
a - 要确定绝对值的参数。
返回:
参数的绝对值。

max

public static int max(int a,
                      int b)
返回两个 int 值中较大的一个。也就是说,结果是更接近 Integer.MAX_VALUE 值的参数。如果参数值相同,则结果是该相同值。

参数:
a - 参数。
b - 另一个参数。
返回:
ab 中大的较大者。
另请参见:
Long.MAX_VALUE

max

public static long max(long a,
                       long b)
返回两个 long 值中较大的一个。也就是说,结果是更接近 Long.MAX_VALUE 值的参数。如果参数值相同,则结果是该相同值。

参数:
a - 参数。
b - 另一个参数。
返回:
ab 中的较大者。
另请参见:
Long.MAX_VALUE

max

public static float max(float a,
                        float b)
返回两个 float 值中较大的一个。也就是说,结果是更接近正无穷大的参数。如果参数值相同,则结果是该相同值。如果两个值都是 NaN,那么结果就是 NaN。与数值比较运算不同,该方法认为负零严格小于正零。如果一个参数是正零,另一个参数是负零,那么结果就是正零。

参数:
a - 参数。
b - 另一个参数。
返回:
ab 中的较大者。

max

public static double max(double a,
                         double b)
返回两个 double 值中较大的一个。也就是说,结果是更接近正无穷大的参数。如果参数值相同,则结果是该相同值。如果两个值都是 NaN,那么结果就是 NaN。与数值比较运算不同,该方法认为负零严格小于正零。如果一个参数是正零,另一个参数是负零,那么结果就是正零。

参数:
a - 参数。
b - 另一个参数。
返回:
ab 中的较大者。

min

public static int min(int a,
                      int b)
返回两个 int 值中较小的一个。也就是说,结果是更接近 Integer.MIN_VALUE 值的参数。如果参数值相同,则结果是该相同值。

参数:
a - 参数。
b - 另一个参数。
返回:
ab 中的较小者。
另请参见:
Long.MIN_VALUE

min

public static long min(long a,
                       long b)
返回两个 long 值中较小的一个。也就是说,结果是更接近 Long.MIN_VALUE 值的参数。如果参数值相同,则结果是该相同值。

参数:
a - 参数。
b - 另一个参数。
返回:
ab 中的较小者。
另请参见:
Long.MIN_VALUE

min

public static float min(float a,
                        float b)
返回两个 float 值中较小的一个。也就是说,结果是更接近负无穷大的值。如果参数值相同,则结果是该相同值。如果两个值都是 NaN,那么结果就是 NaN。与数值比较运算不同,该方法认为负零严格小于正零。如果一个参数是正零,另一个参数是负零,那么结果是负零。

参数:
a - 参数。
b - 另一个参数。
返回:
ab 中的较小者。

min

public static double min(double a,
                         double b)
返回两个 double 值中较小的一个。也就是说,结果是更接近负无穷大的值。如果参数值相同,则结果是该相同值。如果两个值都是 NaN,那么结果就是 NaN。与数值比较运算不同,该方法认为负零严格小于正零。如果一个参数是正零,另一个参数是负零,那么结果是负零。

参数:
a - 参数。
b - 另一个参数。
返回:
ab 中的较小者。

ulp

public static double ulp(double d)
返回参数的 ulp 大小。double 值的 ulp 是该浮点值与下一个较大 double 值之间的正距离。注意,对于非 NaN xulp(-x) == ulp(x)

特殊情况是:

参数:
d - 要返回其 ulp 的浮点值。
返回:
参数的 ulp 大小。
从以下版本开始:
1.5

ulp

public static float ulp(float f)
返回参数的 ulp 大小。float 值的 ulp 是该浮点值与下一个较大 float 值之间的正距离。注意,对于非 NaN xulp(-x) == ulp(x)

特殊情况是:

参数:
d - 要返回其 ulp 的浮点值。
返回:
参数的 ulp 大小。
从以下版本开始:
1.5

signum

public static double signum(double d)
返回参数的符号函数;如果参数是零,则返回零;如果参数大于零,则返回 1.0;如果参数小于零,则返回 -1.0。

特殊情况是:

参数:
d - 要返回其符号函数的浮点值。
返回:
参数的符号函数。
从以下版本开始:
1.5

signum

public static float signum(float f)
返回参数的符号函数;如果参数是零,则返回零;如果参数大于零,则返回 1.0f;如果参数小于零,则返回 -1.0f。

特殊情况是:

参数:
d - 要返回其符号函数的浮点值。
返回:
参数的符号函数。
从以下版本开始:
1.5

sinh

public static double sinh(double x)
返回 double 值的双曲线正弦。x 的双曲线正弦的定义是 (ex - e-x)/2,其中e欧拉数

特殊情况是:

参数:
x - 要返回其双曲线正弦的数。
返回:
x 的双曲线正弦。
从以下版本开始:
1.5

cosh

public static double cosh(double x)
返回 double 值的双曲线余弦。x 的双曲线余弦的定义是 (ex + e-x)/2,其中e欧拉数

特殊情况是:

参数:
x - 要返回其双曲线余弦的数。
返回:
x 的双曲线余弦。
从以下版本开始:
1.5

tanh

public static double tanh(double x)
返回 double 值的双曲线正切。x 的双曲线正切的定义是 (ex - e-x)/(ex + e-x),即 sinh(x)/cosh(x)。注意,准确的双曲正切绝对值始终小于 1。

特殊情况是:

参数:
x - 要返回其双曲线正切的数。
返回:
x 的双曲线正切。
从以下版本开始:
1.5

hypot

public static double hypot(double x,
                           double y)
返回 sqrt(x2 +y2),没有中间溢出或下溢。

特殊情况是:

参数:
x - 一个值。
y - 一个值。
返回:
sqrt(x2 +y2) ,没有中间溢出或下溢
从以下版本开始:
1.5

expm1

public static double expm1(double x)
返回 ex -1。注意,对于接近零的 x 值,expm1(x) + 1 的准确和比 exp(x) 更接近 ex 的真实结果。

特殊情况是:

参数:
x - 在 ex -1 的计算中 e 的指数。
返回:
ex - 1 值。

log1p

public static double log1p(double x)
返回参数与 1 的和的自然对数。注意,对于小的 x 值,log1p(x) 的结果比 log(1.0+x) 的浮点计算结果更接近 ln(1 + x) 的真实结果。

特殊情况是:

参数:
x - 一个值。
返回:
ln(x + 1) 的值,x + 1 的自然对数。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策