|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.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_VALUE
public 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_VALUE
public 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_VALUE
public static long abs(long a)
long
值的絕對值。如果參數不是負數,則返回該參數。如果參數為負數,則返回該參數的相反數。
注意,如果參數等於 Long.MIN_VALUE
的值,即能夠表示的最小負 long
值,那麼結果與該值相同且為負。
a
- 要確定絕對值的參數。
Long.MIN_VALUE
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)
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 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。