java.lang.Object | |
↳ | java.lang.Math |
The class Math
contains methods for performing basic numeric
operations such as the elementary exponential, logarithm, square root, and
trigonometric functions.
The quality of implementation specifications concern two properties, accuracy
of the returned result and monotonicity of the method. Accuracy of the
floating-point Math
methods is measured in terms of ulps,
units in the last place. For a given floating-point format, an ulp of a
specific real number value is the distance between the two floating-point
values bracketing that numerical value. When discussing the accuracy of a
method as a whole rather than at a specific argument, the number of ulps
cited is for the worst-case error at any argument. If a method always has an
error less than 0.5 ulps, the method always returns the floating-point number
nearest the exact result; such a method is correctly rounded. A
correctly rounded method is generally the best a floating-point approximation
can be; however, it is impractical for many floating-point methods to be
correctly rounded. Instead, for the Math
class, a larger error bound
of 1 or 2 ulps is allowed for certain methods. Informally, with a 1 ulp error
bound, when the exact result is a representable number, the exact result
should be returned as the computed result; otherwise, either of the two
floating-point values which bracket the exact result may be returned. For
exact results large in magnitude, one of the endpoints of the bracket may be
infinite. Besides accuracy at individual arguments, maintaining proper
relations between the method at different arguments is also important.
Therefore, most methods with more than 0.5 ulp errors are required to be
semi-monotonic: whenever the mathematical function is non-decreasing,
so is the floating-point approximation, likewise, whenever the mathematical
function is non-increasing, so is the floating-point approximation. Not all
approximations that have 1 ulp accuracy will automatically meet the
monotonicity requirements.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
double | E | The double value that is closer than any other to e, the base
of the natural logarithms. |
|||||||||
double | PI | The double value that is closer than any other to pi, the
ratio of the circumference of a circle to its diameter. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
static double |
IEEEremainder(double f1, double f2)
Computes the remainder operation on two arguments as prescribed by the IEEE
754 standard.
| ||||||||||
static long |
abs(long a)
Returns the absolute value of a
long value. | ||||||||||
static int |
abs(int a)
Returns the absolute value of an
int value. | ||||||||||
static float |
abs(float a)
Returns the absolute value of a
float value. | ||||||||||
static double |
abs(double a)
Returns the absolute value of a
double value. | ||||||||||
static double |
acos(double a)
Returns the arc cosine of a value; the returned angle is in the range 0.0
through pi.
| ||||||||||
static double |
asin(double a)
Returns the arc sine of a value; the returned angle is in the range
-pi/2 through pi/2.
| ||||||||||
static double |
atan(double a)
Returns the arc tangent of a value; the returned angle is in the range
-pi/2 through pi/2.
| ||||||||||
static double |
atan2(double y, double x)
Returns the angle theta from the conversion of rectangular coordinates
(
x , y ) to polar coordinates (r, theta). | ||||||||||
static double |
cbrt(double a)
Returns the cube root of a
double value. | ||||||||||
static double |
ceil(double a)
Returns the smallest (closest to negative infinity)
double value that
is greater than or equal to the argument and is equal to a mathematical
integer. | ||||||||||
static double |
cos(double a)
Returns the trigonometric cosine of an angle.
| ||||||||||
static double |
cosh(double x)
Returns the hyperbolic cosine of a
double value. | ||||||||||
static double |
exp(double a)
Returns Euler's number e raised to the power of a
double
value. | ||||||||||
static double |
expm1(double x)
Returns ex -1.
| ||||||||||
static double |
floor(double a)
Returns the largest (closest to positive infinity)
double value that
is less than or equal to the argument and is equal to a mathematical integer. | ||||||||||
static double |
hypot(double x, double y)
Returns sqrt(x2 +y2) without
intermediate overflow or underflow.
| ||||||||||
static double |
log(double a)
Returns the natural logarithm (base e) of a
double value. | ||||||||||
static double |
log10(double a)
Returns the base 10 logarithm of a
double value. | ||||||||||
static double |
log1p(double x)
Returns the natural logarithm of the sum of the argument and 1.
| ||||||||||
static int |
max(int a, int b)
Returns the greater of two
int values. | ||||||||||
static double |
max(double a, double b)
Returns the greater of two
double values. | ||||||||||
static long |
max(long a, long b)
Returns the greater of two
long values. | ||||||||||
static float |
max(float a, float b)
Returns the greater of two
float values. | ||||||||||
static float |
min(float a, float b)
Returns the smaller of two
float values. | ||||||||||
static int |
min(int a, int b)
Returns the smaller of two
int values. | ||||||||||
static long |
min(long a, long b)
Returns the smaller of two
long values. | ||||||||||
static double |
min(double a, double b)
Returns the smaller of two
double values. | ||||||||||
static double |
pow(double a, double b)
Returns the value of the first argument raised to the power of the second
argument.
| ||||||||||
static double |
rint(double a)
Returns the
double value that is closest in value to the argument and
is equal to a mathematical integer. | ||||||||||
static int |
round(float a)
Returns the closest
int to the argument. | ||||||||||
static long |
round(double a)
Returns the closest
long to the argument. | ||||||||||
static double |
signum(double d)
Returns the signum function of the argument; zero if the argument is zero,
1.0 if the argument is greater than zero, -1.0 if the argument is less than
zero.
| ||||||||||
static float |
signum(float f)
Returns the signum function of the argument; zero if the argument is zero,
1.0f if the argument is greater than zero, -1.0f if the argument is less than
zero.
| ||||||||||
static double |
sin(double a)
Returns the trigonometric sine of an angle.
| ||||||||||
static double |
sinh(double x)
Returns the hyperbolic sine of a
double value. | ||||||||||
static double |
sqrt(double a)
Returns the correctly rounded positive square root of a
double value. | ||||||||||
static double |
tan(double a)
Returns the trigonometric tangent of an angle.
| ||||||||||
static double |
tanh(double x)
Returns the hyperbolic tangent of a
double value. | ||||||||||
static double |
toDegrees(double angrad)
Converts an angle measured in radians to an approximately equivalent angle
measured in degrees.
| ||||||||||
static double |
toRadians(double angdeg)
Converts an angle measured in degrees to an approximately equivalent angle
measured in radians.
| ||||||||||
static double |
ulp(double d)
Returns the size of an ulp of the argument.
| ||||||||||
static float |
ulp(float f)
Returns the size of an ulp of the argument.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
The double
value that is closer than any other to e, the base
of the natural logarithms.
The double
value that is closer than any other to pi, the
ratio of the circumference of a circle to its diameter.
Computes the remainder operation on two arguments as prescribed by the IEEE
754 standard. The remainder value is mathematically equal to
f1 - f2
× n, where n is
the mathematical integer closest to the exact mathematical value of the
quotient f1/f2
, and if two mathematical integers are equally close to
f1/f2
, then n is the integer that is even. If the remainder is
zero, its sign is the same as the sign of the first argument. Special cases:
f1 | the dividend. |
---|---|
f2 | the divisor. |
f1
is divided by f2
.
Returns the absolute value of a long
value. If the argument is not
negative, the argument is returned. If the argument is negative, the negation
of the argument is returned.
Note that if the argument is equal to the value of MIN_VALUE
,
the most negative representable long
value, the result is that same
value, which is negative.
a | the argument whose absolute value is to be determined |
---|
Returns the absolute value of an int
value. If the argument is not
negative, the argument is returned. If the argument is negative, the negation
of the argument is returned.
Note that if the argument is equal to the value of MIN_VALUE
,
the most negative representable int
value, the result is that same
value, which is negative.
a | the argument whose absolute value is to be determined |
---|
Returns the absolute value of a float
value. If the argument is not
negative, the argument is returned. If the argument is negative, the negation
of the argument is returned. Special cases:
Float.intBitsToFloat(0x7fffffff & Float.floatToIntBits(a))
a | the argument whose absolute value is to be determined |
---|
Returns the absolute value of a double
value. If the argument is not
negative, the argument is returned. If the argument is negative, the negation
of the argument is returned. Special cases:
Double.longBitsToDouble((Double.doubleToLongBits(a)<<1)>>>1)
a | the argument whose absolute value is to be determined |
---|
Returns the arc cosine of a value; the returned angle is in the range 0.0 through pi. Special case:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | the value whose arc cosine is to be returned. |
---|
Returns the arc sine of a value; the returned angle is in the range -pi/2 through pi/2. Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | the value whose arc sine is to be returned. |
---|
Returns the arc tangent of a value; the returned angle is in the range -pi/2 through pi/2. Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | the value whose arc tangent is to be returned. |
---|
Returns the angle theta from the conversion of rectangular coordinates
(x
, y
) to polar coordinates (r, theta). This
method computes the phase theta by computing an arc tangent of
y/x
in the range of -pi to pi. Special cases:
double
value
closest to pi.
double
value
closest to -pi.
double
value
closest to pi/2.
double
value
closest to -pi/2.
double
value closest to pi/4.
double
value closest to
3*pi/4.
double
value closest to
-pi/4.
double
value closest to -3*pi/4.
The computed result must be within 2 ulps of the exact result. Results must be semi-monotonic.
y | the ordinate coordinate |
---|---|
x | the abscissa coordinate |
Returns the cube root of a double
value. For positive finite
x
, cbrt(-x) ==
-cbrt(x)
; that is, the cube root of a negative value is the negative of the
cube root of that value's magnitude.
Special cases:
The computed result must be within 1 ulp of the exact result.
a | a value. |
---|
a
.
Returns the smallest (closest to negative infinity) double
value that
is greater than or equal to the argument and is equal to a mathematical
integer. Special cases:
Math.ceil(x)
is exactly the value of
-Math.floor(-x)
.a | a value. |
---|
Returns the trigonometric cosine of an angle. Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | an angle, in radians. |
---|
Returns the hyperbolic cosine of a double
value. The hyperbolic
cosine of x is defined to be
(ex + e-x)/2 where e is
Euler's number
.
Special cases:
1.0
.
The computed result must be within 2.5 ulps of the exact result.
x | The number whose hyperbolic cosine is to be returned. |
---|
x
.
Returns Euler's number e raised to the power of a double
value. Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | the exponent to raise e to. |
---|
a
, where e is the base of
the natural logarithms.
Returns ex -1. Note that for values of x near
0, the exact sum of expm1(x)
+ 1 is much closer to the true
result of ex than exp(x)
.
Special cases:
The computed result must be within 1 ulp of the exact result. Results must be
semi-monotonic. The result of expm1
for any finite input must be
greater than or equal to -1.0
. Note that once the exact result of
ex
- 1 is within 1/2 ulp of the limit
value -1, -1.0
should be returned.
x | the exponent to raise e to in the computation of
ex -1. |
---|
x
- 1.
Returns the largest (closest to positive infinity) double
value that
is less than or equal to the argument and is equal to a mathematical integer.
Special cases:
a | a value. |
---|
Returns sqrt(x2 +y2) without intermediate overflow or underflow.
Special cases:
The computed result must be within 1 ulp of the exact result. If one parameter is held constant, the results must be semi-monotonic in the other parameter.
x | a value |
---|---|
y | a value |
Returns the natural logarithm (base e) of a double
value.
Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | a value |
---|
a
, the natural logarithm of a
.
Returns the base 10 logarithm of a double
value. Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | a value |
---|
a
.
Returns the natural logarithm of the sum of the argument and 1. Note that for
small values x
, the result of log1p(x)
is much closer to the
true result of ln(1 + x
) than the floating-point evaluation of
log(1.0+x)
.
Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
x | a value |
---|
x
+ 1), the natural log of
x
+ 1
Returns the greater of two int
values. That is, the result is the
argument closer to the value of MAX_VALUE
. If the arguments
have the same value, the result is that same value.
a | an argument. |
---|---|
b | another argument. |
a
and b
.
Returns the greater of two double
values. That is, the result is the
argument closer to positive infinity. If the arguments have the same value,
the result is that same value. If either value is NaN, then the result is
NaN. Unlike the numerical comparison operators, this method considers
negative zero to be strictly smaller than positive zero. If one argument is
positive zero and the other negative zero, the result is positive zero.
a | an argument. |
---|---|
b | another argument. |
a
and b
.
Returns the greater of two long
values. That is, the result is the
argument closer to the value of MAX_VALUE
. If the arguments have
the same value, the result is that same value.
a | an argument. |
---|---|
b | another argument. |
a
and b
.
Returns the greater of two float
values. That is, the result is the
argument closer to positive infinity. If the arguments have the same value,
the result is that same value. If either value is NaN, then the result is
NaN. Unlike the numerical comparison operators, this method considers
negative zero to be strictly smaller than positive zero. If one argument is
positive zero and the other negative zero, the result is positive zero.
a | an argument. |
---|---|
b | another argument. |
a
and b
.
Returns the smaller of two float
values. That is, the result is the
value closer to negative infinity. If the arguments have the same value, the
result is that same value. If either value is NaN, then the result is NaN.
Unlike the numerical comparison operators, this method considers negative
zero to be strictly smaller than positive zero. If one argument is positive
zero and the other is negative zero, the result is negative zero.
a | an argument. |
---|---|
b | another argument. |
a
and b
.
Returns the smaller of two int
values. That is, the result the
argument closer to the value of MIN_VALUE
. If the arguments
have the same value, the result is that same value.
a | an argument. |
---|---|
b | another argument. |
a
and b
.
Returns the smaller of two long
values. That is, the result is the
argument closer to the value of MIN_VALUE
. If the arguments have
the same value, the result is that same value.
a | an argument. |
---|---|
b | another argument. |
a
and b
.
Returns the smaller of two double
values. That is, the result is the
value closer to negative infinity. If the arguments have the same value, the
result is that same value. If either value is NaN, then the result is NaN.
Unlike the numerical comparison operators, this method considers negative
zero to be strictly smaller than positive zero. If one argument is positive
zero and the other is negative zero, the result is negative zero.
a | an argument. |
---|---|
b | another argument. |
a
and b
.
Returns the value of the first argument raised to the power of the second argument. Special cases:
double
value.
(In the foregoing descriptions, a floating-point value is considered to be an
integer if and only if it is finite and a fixed point of the method
ceil
or, equivalently, a fixed point of the method
floor
. A value is a fixed point of a one-argument method if
and only if the result of applying the method to the value is equal to the
value.)
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | the base. |
---|---|
b | the exponent. |
a
b
.
Returns the double
value that is closest in value to the argument and
is equal to a mathematical integer. If two double
values that are
mathematical integers are equally close, the result is the integer value that
is even. Special cases:
a | a double value. |
---|
a
that is equal to a
mathematical integer.
Returns the closest int
to the argument. The result is rounded to an
integer by adding 1/2, taking the floor of the result, and casting the result
to type int
. In other words, the result is equal to the value of the
expression:
(int)Math.floor(a + 0.5f)
Special cases:
Integer.MIN_VALUE
, the result is equal to the value of
Integer.MIN_VALUE
.
Integer.MAX_VALUE
, the result is equal to the value
of Integer.MAX_VALUE
.
a | a floating-point value to be rounded to an integer. |
---|
int
value.Returns the closest long
to the argument. The result is rounded to an
integer by adding 1/2, taking the floor of the result, and casting the result
to type long
. In other words, the result is equal to the value of the
expression:
(long)Math.floor(a + 0.5d)
Special cases:
Long.MIN_VALUE
, the result is equal to the value of
Long.MIN_VALUE
.
Long.MAX_VALUE
, the result is equal to the value of
Long.MAX_VALUE
.
a | a floating-point value to be rounded to a long . |
---|
long
value.Returns the signum function of the argument; zero if the argument is zero, 1.0 if the argument is greater than zero, -1.0 if the argument is less than zero.
Special Cases:
d | the floating-point value whose signum is to be returned |
---|
Returns the signum function of the argument; zero if the argument is zero, 1.0f if the argument is greater than zero, -1.0f if the argument is less than zero.
Special Cases:
f | the floating-point value whose signum is to be returned |
---|
Returns the trigonometric sine of an angle. Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | an angle, in radians. |
---|
Returns the hyperbolic sine of a double
value. The hyperbolic sine of
x is defined to be (ex - e-x)/2
where e is Euler's number
.
Special cases:
The computed result must be within 2.5 ulps of the exact result.
x | The number whose hyperbolic sine is to be returned. |
---|
x
.
Returns the correctly rounded positive square root of a double
value.
Special cases:
double
value closest to the true
mathematical square root of the argument value.a | a value. |
---|
a
. If the argument is NaN or less
than zero, the result is NaN.
Returns the trigonometric tangent of an angle. Special cases:
The computed result must be within 1 ulp of the exact result. Results must be semi-monotonic.
a | an angle, in radians. |
---|
Returns the hyperbolic tangent of a double
value. The hyperbolic
tangent of x is defined to be
(ex - e-x)/(ex + e-x),
in other words, sinh(x)
/cosh(x)
. Note that the absolute value of the exact tanh is always
less than 1.
Special cases:
+1.0
.
-1.0
.
The computed result must be within 2.5 ulps of the exact result. The result
of tanh
for any finite input must have an absolute value less than or
equal to 1. Note that once the exact result of tanh is within 1/2 of an ulp
of the limit value of ±1, correctly signed ±1.0
should
be returned.
x | The number whose hyperbolic tangent is to be returned. |
---|
x
.
Converts an angle measured in radians to an approximately equivalent angle
measured in degrees. The conversion from radians to degrees is generally
inexact; users should not expect cos(toRadians(90.0))
to
exactly equal 0.0
.
angrad | an angle, in radians |
---|
angrad
in degrees.
Converts an angle measured in degrees to an approximately equivalent angle measured in radians. The conversion from degrees to radians is generally inexact.
angdeg | an angle, in degrees |
---|
angdeg
in radians.
Returns the size of an ulp of the argument. An ulp of a double
value
is the positive distance between this floating-point value and the
double
value next larger in magnitude. Note that for non-NaN
x, ulp(-x) == ulp(x)
.
Special Cases:
Double.MIN_VALUE
.
Double.MAX_VALUE
, then the result is
equal to 2971.
d | the floating-point value whose ulp is to be returned |
---|
Returns the size of an ulp of the argument. An ulp of a float
value
is the positive distance between this floating-point value and the
float
value next larger in magnitude. Note that for non-NaN x,
ulp(-x) == ulp(x)
.
Special Cases:
Float.MIN_VALUE
.
Float.MAX_VALUE
, then the result is
equal to 2104.
f | the floating-point value whose ulp is to be returned |
---|