鴻蒙OS Math

2022-05-17 17:29 更新

Math

java.lang.Object

|---java.lang.Math

public final class Math
extends Object

Math 類包含執(zhí)行基本數(shù)值運算的方法,例如初等指數(shù)、對數(shù)、平方根和三角函數(shù)。

與 StrictMath 類的一些數(shù)值方法不同,Math 類的等效函數(shù)的所有實現(xiàn)都未定義為返回逐位相同的結(jié)果。這種放松允許在不需要嚴格的再現(xiàn)性的情況下實現(xiàn)更好的性能。

默認情況下,許多 Math 方法只是簡單地調(diào)用 StrictMath 中的等效方法來實現(xiàn)它們。鼓勵代碼生成器在可用的情況下使用特定于平臺的本機庫或微處理器指令,以提供更高性能的數(shù)學方法實現(xiàn)。這種更高性能的實現(xiàn)仍然必須符合 Math.xml 的規(guī)范。

實現(xiàn)規(guī)范的質(zhì)量涉及兩個屬性,返回結(jié)果的準確性和方法的單調(diào)性。浮點數(shù)學方法的準確性以 ulps 為單位,最后的單位。對于給定的浮點格式,特定實數(shù)值的 ulp 是包圍該數(shù)值的兩個浮點值之間的距離。當討論一個方法作為一個整體而不是一個特定參數(shù)的準確性時,引用的 ulp 數(shù)量是針對任何參數(shù)的最壞情況錯誤。如果一個方法的誤差總是小于 0.5 ulps,該方法總是返回最接近精確結(jié)果的浮點數(shù);這種方法是正確四舍五入的。正確舍入的方法通常是浮點近似的最佳方法;但是,正確舍入許多浮點方法是不切實際的。相反,對于 Math 類,某些方法允許更大的誤差范圍為 1 或 2 ulps。非正式地,在 1 ulp 誤差范圍內(nèi),當精確結(jié)果是可表示的數(shù)字時,精確結(jié)果應(yīng)作為計算結(jié)果返回;否則,可以返回包含確切結(jié)果的兩個浮點值中的任何一個。對于數(shù)量級較大的精確結(jié)果,括號的端點之一可能是無限的。除了個別論點的準確性外,保持不同論點的方法之間的適當關(guān)系也很重要。因此,大多數(shù) ulp 誤差大于 0.5 的方法都要求是半單調(diào)的:只要數(shù)學函數(shù)不減,浮點逼近也是如此,同樣,只要數(shù)學函數(shù)不增,浮點逼近也是點近似。并非所有具有 1 ulp 精度的近似值都會自動滿足單調(diào)性要求。

該平臺使用帶有 int 和 long 原始類型的帶符號二進制補碼整數(shù)算術(shù)。開發(fā)人員應(yīng)選擇原始類型以確保算術(shù)運算始終產(chǎn)生正確的結(jié)果,這在某些情況下意味著運算不會溢出計算值的范圍。最佳實踐是選擇原始類型和算法以避免溢出。在大小為 int 或 long 且需要檢測溢出錯誤的情況下,方法 addExact、subtractExact、multiplyExact 和 toIntExact 在結(jié)果溢出時拋出 ArithmeticException。對于其他算術(shù)運算,例如除法、絕對值、遞增、遞減和求反,溢出僅發(fā)生在特定的最小值或最大值時,應(yīng)根據(jù)需要檢查最小值或最大值。

字段摘要

修飾符和類型 字段 描述
static double E 比任何其他值更接近 e(自然對數(shù)的底)的雙精度值。
static double PI 比任何其他值更接近 pi 的雙精度值,即圓的周長與其直徑的比率。

方法總結(jié)

修飾符和類型 方法 描述
static double abs(double a) 返回雙精度值的絕對值。
static float abs(float a) 返回浮點值的絕對值。
static int abs(int a) 返回 int 值的絕對值。
static long abs(long a) 返回一個 long 值的絕對值。
static double acos(double a) 返回一個值的反余弦值; 返回的角度在 0.0 到 pi 的范圍內(nèi)。
static int addExact(int x, int y) 返回其參數(shù)的總和,如果結(jié)果溢出 int,則拋出異常。
static long addExact(long x, long y) 返回其參數(shù)的總和,如果結(jié)果溢出 long 則拋出異常。
static double asin(double a) 返回一個值的反正弦; 返回的角度在 -pi/2 到 pi/2 的范圍內(nèi)。
static double atan(double a) 返回值的反正切; 返回的角度在 -pi/2 到 pi/2 的范圍內(nèi)。
static double atan2(double y, double x) 從直角坐標 (x, y) 到極坐標 (r, theta) 的轉(zhuǎn)換中返回角度 theta。
static double cbrt(double a) 返回雙精度值的立方根。
static double ceil(double a) 返回大于或等于參數(shù)且等于數(shù)學整數(shù)的最?。ㄗ罱咏摕o窮大)雙精度值。
static double copySign(double magnitude, double sign) 返回帶有第二個浮點參數(shù)符號的第一個浮點參數(shù)。
static float copySign(float magnitude, float sign) 返回帶有第二個浮點參數(shù)符號的第一個浮點參數(shù)。
static double cos(double a) 返回角度的三角余弦值。
static double cosh(double x) 返回 double 值的雙曲余弦值。
static int decrementExact(int a) 返回減一的參數(shù),如果結(jié)果溢出 int,則拋出異常。
static long decrementExact(long a) 返回減一的參數(shù),如果結(jié)果溢出 long 則拋出異常。
static double exp(double a) 返回歐拉數(shù) e 的雙精度次方。
static double expm1(double x) 返回 ex -1。
static double floor(double a) 返回小于或等于參數(shù)且等于數(shù)學整數(shù)的最大(最接近正無窮大)雙精度值。
static int floorDiv(int x, int y) 返回小于或等于代數(shù)商的最大(最接近正無窮大)int 值。
static long floorDiv(long x, long y) 返回小于或等于代數(shù)商的最大(最接近正無窮大)long 值。
static int floorMod(int x, int y) 返回 int 參數(shù)的底模。
static long floorMod(long x, long y) 返回長參數(shù)的底模。
static int getExponent(double d) 返回用于表示雙精度的無偏指數(shù)。
static int getExponent(float f) 返回浮點數(shù)表示中使用的無偏指數(shù)。
static double hypot(double x, double y) 返回 sqrt(x2 +y2) 沒有中間溢出或下溢。
static double IEEEremainder(double f1, double f2) 計算 IEEE 754 標準規(guī)定的兩個參數(shù)的余數(shù)運算。
static int incrementExact(int a) 返回加一的參數(shù),如果結(jié)果溢出 int 則拋出異常。
static long incrementExact(long a) 返回加一的參數(shù),如果結(jié)果溢出 long 則拋出異常。
static double log(double a) 返回雙精度值的自然對數(shù)(底數(shù) e)。
static double log10(double a) 返回雙精度值的以 10 為底的對數(shù)。
static double log1p(double x) 返回參數(shù)和 1 之和的自然對數(shù)。
static double max(double a, double b) 返回兩個雙精度值中的較大者。
static float max(float a, float b) 返回兩個浮點值中的較大者。
static int max(int a, int b) 返回兩個 int 值中的較大者。
static long max(long a, long b) 返回兩個 long 值中的較大者。
static double min(double a, double b) 返回兩個雙精度值中較小的一個。
static float min(float a, float b) 返回兩個浮點值中較小的一個。
static int min(int a, int b) 返回兩個 int 值中較小的一個。
static long min(long a, long b) 返回兩個 long 值中較小的一個。
static int multiplyExact(int x, int y) 返回參數(shù)的乘積,如果結(jié)果溢出 int,則拋出異常。
static long multiplyExact(long x, long y) 返回參數(shù)的乘積,如果結(jié)果溢出 long 則拋出異常。
static int negateExact(int a) 返回參數(shù)的否定,如果結(jié)果溢出 int 則拋出異常。
static long negateExact(long a) 返回參數(shù)的否定,如果結(jié)果溢出 long 則拋出異常。
static double nextAfter(double start, double direction) 返回第二個參數(shù)方向上與第一個參數(shù)相鄰的浮點數(shù)。
static float nextAfter(float start, double direction) 返回第二個參數(shù)方向上與第一個參數(shù)相鄰的浮點數(shù)。
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) 返回第一個參數(shù)的第二個參數(shù)次冪的值。
static double random() 返回一個帶正號的雙精度值,大于或等于 0.0 且小于 1.0。
static double rint(double a) 返回與參數(shù)值最接近且等于數(shù)學整數(shù)的雙精度值。
static long round(double a) 返回最接近參數(shù)的長整數(shù),并舍入為正無窮大。
static int round(float a) 返回最接近參數(shù)的 int,并舍入為正無窮大。
static double scalb(double d, int scaleFactor) 返回四舍五入的 d × 2scaleFactor,就像通過單個正確舍入的浮點乘以雙精度值集的成員一樣。
static float scalb(float f, int scaleFactor) 返回 f × 2scaleFactor 舍入,就好像通過單個正確舍入的浮點乘以浮點值集的成員一樣。
static double signum(double d) 返回參數(shù)的符號函數(shù); 如果參數(shù)為零,則為零,如果參數(shù)大于零,則為 1.0,如果參數(shù)小于零,則為 -1.0。
static float signum(float f) 返回參數(shù)的符號函數(shù); 如果參數(shù)為零,則為零,如果參數(shù)大于零,則為 1.0f,如果參數(shù)小于零,則為 -1.0f。
static double sin(double a) 返回角度的三角正弦值。
static double sinh(double x) 返回 double 值的雙曲正弦值。
static double sqrt(double a) 返回雙精度值的正確舍入正平方根。
static int subtractExact(int x, int y) 返回參數(shù)的差異,如果結(jié)果溢出 int,則拋出異常。
static long subtractExact(long x, long y) 返回參數(shù)的差異,如果結(jié)果溢出 long 則拋出異常。
static double tan(double a) 返回角度的三角正切。
static double tanh(double x) 返回 double 值的雙曲正切值。
static double toDegrees(double angrad) 將以弧度測量的角度轉(zhuǎn)換為以度為單位測量的大致等效角度。
static int toIntExact(long value) 返回長參數(shù)的值; 如果值溢出 int,則拋出異常。
static double toRadians(double angdeg) 將以度為單位的角度轉(zhuǎn)換為以弧度為單位的大致等效角度。
static double ulp(double d) 返回參數(shù)的 ulp 的大小。
static float ulp(float f) 返回參數(shù)的 ulp 的大小。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段詳細信息

E

public static final double E

比任何其他值更接近 e(自然對數(shù)的底)的雙精度值。

PI

public static final double PI

比任何其他值更接近 pi 的雙精度值,即圓的周長與其直徑的比率。

方法詳情

sin

public static double sin(double a)

返回角度的三角正弦值。 特別案例:

  • 如果參數(shù)為 NaN 或無窮大,則結(jié)果為 NaN。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個角度,以弧度為單位。

返回:

論證的正弦。

cos

public static double cos(double a)

返回角度的三角余弦值。 特別案例:

  • 如果參數(shù)為 NaN 或無窮大,則結(jié)果為 NaN。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個角度,以弧度為單位。

返回:

參數(shù)的余弦。

tan

public static double tan(double a)

返回角度的三角正切。 特別案例:

  • 如果參數(shù)為 NaN 或無窮大,則結(jié)果為 NaN。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個角度,以弧度為單位。

返回:

論點的切線。

asin

public static double asin(double a)

返回一個值的反正弦; 返回的角度在 -pi/2 到 pi/2 的范圍內(nèi)。 特別案例:

  • 如果參數(shù)為 NaN 或其絕對值大于 1,則結(jié)果為 NaN。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要返回其反正弦的值。

返回:

參數(shù)的反正弦。

acos

public static double acos(double a)

返回一個值的反余弦值; 返回的角度在 0.0 到 pi 的范圍內(nèi)。 特例:

  • 如果參數(shù)為 NaN 或其絕對值大于 1,則結(jié)果為 NaN。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要返回其反余弦值的值。

返回:

參數(shù)的反余弦。

atan

public static double atan(double a)

返回值的反正切; 返回的角度在 -pi/2 到 pi/2 的范圍內(nèi)。 特別案例:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要返回其反正切的值。

返回:

參數(shù)的反正切。

toRadians

public static double toRadians(double angdeg)

將以度為單位的角度轉(zhuǎn)換為以弧度為單位的大致等效角度。 從度數(shù)到弧度的轉(zhuǎn)換通常是不精確的。

參數(shù):

參數(shù)名稱 參數(shù)描述
angdeg 一個角度,以度為單位

返回:

以弧度為單位的角度 angdeg 的測量值。

toDegrees

public static double toDegrees(double angrad)

將以弧度測量的角度轉(zhuǎn)換為以度為單位測量的大致等效角度。 從弧度到度數(shù)的轉(zhuǎn)換通常是不精確的; 用戶不應(yīng)該*期望 cos(toRadians(90.0)) 完全等于 0.0。

參數(shù):

參數(shù)名稱 參數(shù)描述
angrad 一個角度,以弧度為單位

返回:

以度為單位的角度 angrad 的測量值。

exp

public static double exp(double a)

返回歐拉數(shù) e 的雙精度次方。 特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮大,那么結(jié)果是正無窮大。
  • 如果參數(shù)為負無窮大,則結(jié)果為正零。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 將 e 提高到的指數(shù)。

返回:

ea,其中 e 是自然對數(shù)的底。

log

public static double log(double a)

返回雙精度值的自然對數(shù)(底數(shù) e)。 特別情況:

  • 如果參數(shù)為 NaN 或小于零,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮大,那么結(jié)果是正無窮大。
  • 如果參數(shù)為正零或負零,則結(jié)果為負無窮大。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個值

返回:

a中的值,a的自然對數(shù)。

log10

public static double log10(double a)

返回雙精度值的以 10 為底的對數(shù)。 特別情況:

  • 如果參數(shù)為 NaN 或小于零,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮大,那么結(jié)果是正無窮大。
  • 如果參數(shù)為正零或負零,則結(jié)果為負無窮大。
  • 如果參數(shù)等于整數(shù) n 的 10n,則結(jié)果為 n

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個值

返回:

a 的以 10 為底的對數(shù)。

sqrt

public static double sqrt(double a)

返回雙精度值的正確舍入正平方根。 特別情況:

  • 如果參數(shù)為 NaN 或小于零,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮大,那么結(jié)果是正無窮大。
  • 如果參數(shù)是正零或負零,則結(jié)果與參數(shù)相同。

否則,結(jié)果是最接近參數(shù)值的真正數(shù)學平方根的雙精度值。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個值

返回:

a 的正平方根。 如果參數(shù)為 NaN 或小于零,則結(jié)果為 NaN。

cbrt

public static double cbrt(double a)

返回雙精度值的立方根。 對于正有限 x,cbrt(-x) == -cbrt(x); 也就是說,負值的立方根是該值大小的立方根的負數(shù)。 特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是無限的,則結(jié)果是與參數(shù)相同符號的無窮大。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個值

返回:

a的立方根。

IEEEremainder

public static double IEEEremainder(double f1, double f2)

計算 IEEE 754 標準規(guī)定的兩個參數(shù)的余數(shù)運算。 余數(shù)值在數(shù)學上等于 f1 - f2 × n,其中 n 是最接近商 f1/f2 的精確數(shù)學值的數(shù)學整數(shù),如果兩個數(shù)學整數(shù)同樣接近 f1/f2,則 n 是偶數(shù)整數(shù)。 如果余數(shù)為零,則其符號與第一個參數(shù)的符號相同。 特別案例:

  • 如果任一參數(shù)為 NaN,或第一個參數(shù)為無窮大,或第二個參數(shù)為正零或負零,則結(jié)果為 NaN。
  • 如果第一個參數(shù)是有限的,而第二個參數(shù)是無限的,那么結(jié)果與第一個參數(shù)相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
f1 被除數(shù)。
f2 除數(shù)。

返回:

f1 除以 f2 的余數(shù)。

ceil

public static double ceil(double a)

返回大于或等于參數(shù)且等于數(shù)學整數(shù)的最?。ㄗ罱咏摕o窮大)雙精度值。 特別案例:

  • 如果參數(shù)值已經(jīng)等于數(shù)學整數(shù),則結(jié)果與參數(shù)相同。
  • 如果參數(shù)是 NaN 或無窮大或正零或負零,則結(jié)果與參數(shù)相同。
  • 如果參數(shù)值小于零但大于 -1.0,則結(jié)果為負零。

請注意,Math.ceil(x) 的值正是 -Math.floor(-x) 的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個值

返回:

大于或等于參數(shù)且等于數(shù)學整數(shù)的最?。ㄗ罱咏摕o窮大)浮點值。

floor

public static double floor(double a)

返回小于或等于參數(shù)且等于數(shù)學整數(shù)的最大(最接近正無窮大)雙精度值。 特別情況:

  • 如果參數(shù)值已經(jīng)等于數(shù)學整數(shù),則結(jié)果與參數(shù)相同。
  • 如果參數(shù)是 NaN 或無窮大或正零或負零,則結(jié)果與參數(shù)相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個值

返回:

小于或等于參數(shù)且等于數(shù)學整數(shù)的最大(最接近正無窮大)浮點值。

rint

public static double rint(double a)

返回與參數(shù)值最接近且等于數(shù)學整數(shù)的雙精度值。 如果兩個作為數(shù)學整數(shù)的雙精度值同樣接近,則結(jié)果是偶數(shù)的整數(shù)值。 特別案例:

  • 如果參數(shù)值已經(jīng)等于數(shù)學整數(shù),則結(jié)果與參數(shù)相同。
  • 如果參數(shù)是 NaN 或無窮大或正零或負零,則結(jié)果與參數(shù)相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個double值。

返回:

最接近等于數(shù)學整數(shù)的 a 的浮點值。

atan2

public static double atan2(double y, double x)

從直角坐標 (x, y) 到極坐標 (r, theta) 的轉(zhuǎn)換中返回角度 theta。此方法通過計算 -pipi 范圍內(nèi)的 y/x 的反正切來計算相位 theta。特別案例:

  • 如果任一參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果第一個參數(shù)為正零且第二個參數(shù)為正,或者第一個參數(shù)為正且有限且第二個參數(shù)為正無窮,則結(jié)果為正零。
  • 如果第一個參數(shù)為負零,第二個參數(shù)為正,或者第一個參數(shù)為負且有限,而第二個參數(shù)為正無窮,則結(jié)果為負零。
  • 如果第一個參數(shù)為正零,第二個參數(shù)為負,或者第一個參數(shù)為正且有限,第二個參數(shù)為負無窮,則結(jié)果是最接近 pi 的雙精度值。
  • 如果第一個參數(shù)為負零且第二個參數(shù)為負,或者第一個參數(shù)為負且有限且第二個參數(shù)為負無窮,則結(jié)果是最接近 -pi 的雙精度值。
  • 如果第一個參數(shù)為正,第二個參數(shù)為正零或負零,或者第一個參數(shù)為正無窮大,第二個參數(shù)為有限,則結(jié)果是最接近 pi/2 的雙精度值。
  • 如果第一個參數(shù)是負數(shù),第二個參數(shù)是正零或負零,或者第一個參數(shù)是負無窮大,第二個參數(shù)是有限的,那么結(jié)果是最接近 -pi/2 的雙精度值。
  • 如果兩個參數(shù)都是正無窮大,那么結(jié)果是最接近 pi/4 的雙精度值。
  • 如果第一個參數(shù)是正無窮大,第二個參數(shù)是負無窮大,那么結(jié)果是最接近 3*pi/4 的雙精度值。
  • 如果第一個參數(shù)是負無窮大,第二個參數(shù)是正無窮大,則結(jié)果是最接近 -pi/4 的雙精度值。
  • 如果兩個參數(shù)都是負無窮大,則結(jié)果是最接近 -3*pi/4 的雙精度值。

計算結(jié)果必須在精確結(jié)果的 2 ulps 范圍內(nèi)。結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
y 縱坐標
x 橫坐標

返回:

極坐標中點 (r, theta) 的 theta 分量,對應(yīng)于笛卡爾坐標中的點 (x, y)。

pow

public static double pow(double a, double b)

返回第一個參數(shù)的第二個參數(shù)次冪的值。 特別情況:

  • 如果第二個參數(shù)是正零或負零,則結(jié)果為 1.0。
  • 如果第二個參數(shù)為 1.0,則結(jié)果與第一個參數(shù)相同。
  • 如果第二個參數(shù)是 NaN,那么結(jié)果是 NaN。
  • 如果第一個參數(shù)為 NaN,第二個參數(shù)為非零,則結(jié)果為 NaN。
  • 如果
    • 第一個參數(shù)的絕對值大于 1,第二個參數(shù)為正無窮大,或
    • 第一個參數(shù)的絕對值小于 1,第二個參數(shù)為負無窮大,那么結(jié)果是正無窮大。
  • 如果
    • 第一個參數(shù)的絕對值大于 1,第二個參數(shù)為負無窮大,或
    • 第一個參數(shù)的絕對值小于 1,第二個參數(shù)為正無窮大,那么結(jié)果是正零。
  • 如果第一個參數(shù)的絕對值等于 1,而第二個參數(shù)是無限的,則結(jié)果為 NaN。
  • 如果
    • 第一個參數(shù)為正零,第二個參數(shù)大于零,或
    • 第一個參數(shù)是正無窮大,第二個參數(shù)小于零,那么結(jié)果是正零。
  • 如果
    • 第一個參數(shù)為正零,第二個參數(shù)小于零,或
    • 第一個參數(shù)是正無窮大,第二個參數(shù)大于零,那么結(jié)果是正無窮大。
  • 如果
    • 第一個參數(shù)為負零,第二個參數(shù)大于零但不是有限奇數(shù),或
    • 第一個參數(shù)是負無窮大,第二個參數(shù)小于零但不是有限奇數(shù),那么結(jié)果是正零。
  • 如果
    • 第一個參數(shù)是負零,第二個參數(shù)是一個正有限奇整數(shù),或者
    • 第一個參數(shù)是負無窮大,第二個參數(shù)是一個負有限奇整數(shù),那么結(jié)果是負零。
  • 如果
    • 第一個參數(shù)為負零,第二個參數(shù)小于零但不是有限奇數(shù),或
    • 第一個參數(shù)是負無窮大,第二個參數(shù)大于零但不是有限奇數(shù),那么結(jié)果是正無窮大。
  • 如果
    • 第一個參數(shù)是負零,第二個參數(shù)是一個負有限奇整數(shù),或者
    • 第一個參數(shù)是負無窮大,第二個參數(shù)是一個正有限奇整數(shù),那么結(jié)果是負無窮大。
  • 如果第一個參數(shù)是有限的并且小于零
    • 如果第二個參數(shù)是有限偶整數(shù),則結(jié)果等于將第一個參數(shù)的絕對值提高到第二個參數(shù)的冪的結(jié)果
    • 如果第二個參數(shù)是有限奇整數(shù),則結(jié)果等于將第一個參數(shù)的絕對值提高到第二個參數(shù)的冪的結(jié)果的負數(shù)
    • 如果第二個參數(shù)是有限的而不是整數(shù),則結(jié)果為 NaN。
  • 如果兩個參數(shù)都是整數(shù),則結(jié)果完全等于將第一個參數(shù)提升到第二個參數(shù)的冪的數(shù)學結(jié)果,如果該結(jié)果實際上可以精確地表示為雙精度值。

(在前面的描述中,浮點值被認為是整數(shù)當且僅當它是有限的并且是方法 ceil 的不動點,或者等效地,方法層的不動點。一個值是一個不動點 當且僅當將方法應(yīng)用于值的結(jié)果等于該值時,才屬于單參數(shù)方法。)

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 底數(shù)
b 指數(shù)

返回:

值 ab。

round

public static int round(float a)

返回最接近參數(shù)的 int,并舍入為正無窮大。

特別案例:

  • 如果參數(shù)為 NaN,則結(jié)果為 0。
  • 如果參數(shù)為負無窮大或任何小于或等于 Integer.MIN_VALUE 的值,則結(jié)果等于 Integer.MIN_VALUE 的值。
  • 如果參數(shù)為正無窮大或任何大于或等于 Integer.MAX_VALUE 的值,則結(jié)果等于 Integer.MAX_VALUE 的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要舍入為整數(shù)的浮點值。

返回:

參數(shù)的值四舍五入到最接近的 int 值。

round

public static long round(double a)

返回最接近參數(shù)的長整數(shù),并舍入為正無窮大。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 0。
  • 如果參數(shù)為負無窮大或任何小于或等于 Long.MIN_VALUE 的值,則結(jié)果等于 Long.MIN_VALUE 的值。
  • 如果參數(shù)為正無窮大或任何大于或等于 Long.MAX_VALUE 的值,則結(jié)果等于 Long.MAX_VALUE 的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要舍入為 long 的浮點值。

返回:

參數(shù)的值四舍五入到最接近的 long 值。

random

public static double random()

返回一個帶正號的雙精度值,大于或等于 0.0 且小于 1.0。 返回值是偽隨機選擇的,從該范圍(近似)均勻分布。

當這個方法第一次被調(diào)用時,它會創(chuàng)建一個新的偽隨機數(shù)生成器,就像通過表達式一樣

new java.util.Random()

這個新的偽隨機數(shù)生成器隨后用于對該方法的所有調(diào)用,并且不會在其他任何地方使用。

此方法已正確同步,以允許多個線程正確使用。 但是,如果許多線程需要以很高的速率生成偽隨機數(shù),則可能會減少每個線程對擁有自己的偽隨機數(shù)生成器的爭用。

返回:

大于或等于 0.0 且小于 1.0 的偽隨機 double。

addExact

public static int addExact(int x, int y)

返回其參數(shù)的總和,如果結(jié)果溢出 int,則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 第一個值
y 第二個值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個 int

addExact

public static long addExact(long x, long y)

返回其參數(shù)的總和,如果結(jié)果溢出 long 則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 第一個值
y 第二個值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個long

subtractExact

public static int subtractExact(int x, int y)

返回參數(shù)的差異,如果結(jié)果溢出 int,則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 第一個值
y 從第一個值中減去的第二個值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個 int

subtractExact

public static long subtractExact(long x, long y)

返回參數(shù)的差異,如果結(jié)果溢出 long 則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 第一個值
y 從第一個值中減去的第二個值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個long

multiplyExact

public static int multiplyExact(int x, int y)

返回參數(shù)的乘積,如果結(jié)果溢出 int,則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 第一個值
y 第二個值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個 int

multiplyExact

public static long multiplyExact(long x, long y)

返回參數(shù)的乘積,如果結(jié)果溢出 long 則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 第一個值
y 第二個值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個long

incrementExact

public static int incrementExact(int a)

返回加一的參數(shù),如果結(jié)果溢出 int 則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要增加的值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個 int

incrementExact

public static long incrementExact(long a)

返回加一的參數(shù),如果結(jié)果溢出 long 則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要增加的值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個long

decrementExact

public static int decrementExact(int a)

返回減一的參數(shù),如果結(jié)果溢出 int,則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要減少的值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException if the result overflows an int

decrementExact

public static long decrementExact(long a)

返回減一的參數(shù),如果結(jié)果溢出 long 則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要減少的值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個long

negateExact

public static int negateExact(int a)

返回參數(shù)的否定,如果結(jié)果溢出 int 則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要否定的值

返回:

j結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個 int

negateExact

public static long negateExact(long a)

返回參數(shù)的否定,如果結(jié)果溢出 long 則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要否定的值

返回:

結(jié)果

Throws:

Throw名稱 Throw描述
ArithmeticException 如果結(jié)果溢出一個long

toIntExact

public static int toIntExact(long value)

返回long參數(shù)的值; 如果值溢出 int,則拋出異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
value 一個long值

返回:

作為 int 的參數(shù)

Throws:

Throw名稱 Throw描述
ArithmeticException 如果參數(shù)溢出一個 int

floorDiv

public static int floorDiv(int x, int y)

返回小于或等于代數(shù)商的最大(最接近正無窮大)int 值。 有一種特殊情況,如果被除數(shù)是 Integer#MIN_VALUE 而除數(shù)是 -1,則發(fā)生整數(shù)溢出,結(jié)果等于 Integer.MIN_VALUE。

正常整數(shù)除法在舍入到零舍入模式(截斷)下運行。 此操作改為在朝負無窮大(下限)舍入模式下進行。 當精確結(jié)果為負時,下舍入模式給出的結(jié)果與截斷不同。

  • 如果參數(shù)的符號相同,則 floorDiv 和 / 運算符的結(jié)果相同。 例如, floorDiv(4, 3) == 1 和 (4 / 3) == 1。
  • 如果參數(shù)的符號不同,則商為負,floorDiv 返回小于或等于商的整數(shù),/ 運算符返回最接近零的整數(shù)。 例如, floorDiv(-4, 3) == -2,而 (-4 / 3) == -1。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 被除數(shù)
y 除數(shù)

返回:

小于或等于代數(shù)商的最大(最接近正無窮大)int 值。

Throws:

Throw名稱 Throw描述
ArithmeticException 如果除數(shù) y 為零

floorDiv

public static long floorDiv(long x, long y)

返回小于或等于代數(shù)商的最大(最接近正無窮大)long 值。 有一種特殊情況,如果被除數(shù)是 Long#MIN_VALUE 而除數(shù)是 -1,則發(fā)生整數(shù)溢出,結(jié)果等于 Long.MIN_VALUE。

正常整數(shù)除法在舍入到零舍入模式(截斷)下運行。 此操作改為在朝負無窮大(下限)舍入模式下進行。 當精確結(jié)果為負時,下舍入模式給出的結(jié)果與截斷不同。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 被除數(shù)
y 除數(shù)

返回:

小于或等于代數(shù)商的最大(最接近正無窮大)long 值。

Throws:

Throw名稱 Throw描述
ArithmeticException 如果除數(shù) y 為零

floorMod

public static int floorMod(int x, int y)

返回 int 參數(shù)的底模。

底模為 x - (floorDiv(x, y) * y),與除數(shù) y 具有相同的符號,并且在 -abs(y) < r < +abs(y) 的范圍內(nèi)。

floorDiv 和 floorMod 之間的關(guān)系是這樣的:

  • floorDiv(x, y) * y + floorMod(x, y) == x

floorMod 和 % 運算符之間的值差異是由于 floorDiv 返回小于或等于商的整數(shù)與返回最接近零的整數(shù)的 / 運算符之間的差異。

例如:

  • 如果參數(shù)的符號相同,則 floorMod 和 % 運算符的結(jié)果相同。
    • floorMod(4, 3) == 1; and (4 % 3) == 1
  • 如果參數(shù)的符號不同,則結(jié)果與 % 運算符不同。
    • floorMod(+4, -3) == -2; and (+4 % -3) == +1
    • floorMod(-4, +3) == +2; and (-4 % +3) == -1
    • floorMod(-4, -3) == -1; and (-4 % -3) == -1

如果參數(shù)的符號未知并且需要正模數(shù),則可以將其計算為 (floorMod(x, y) + abs(y)) % abs(y)。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 被除數(shù)
y 除數(shù)

返回:

底模 x - (floorDiv(x, y) * y)

Throws:

Throw名稱 Throw描述
ArithmeticException 如果除數(shù) y 為零

floorMod

public static long floorMod(long x, long y)

返回long參數(shù)的底模。

底模為 x - (floorDiv(x, y) * y),與除數(shù) y 具有相同的符號,并且在 -abs(y) < r < +abs(y) 的范圍內(nèi)。

floorDiv 和 floorMod 之間的關(guān)系是這樣的:

  • floorDiv(x, y) * y + floorMod(x, y) == x

參數(shù):

參數(shù)名稱 參數(shù)描述
x 被除數(shù)
y 除數(shù)

返回:

底模 x - (floorDiv(x, y) * y)

Throws:

Throw名稱 Throw描述
ArithmeticException 如果除數(shù) y 為零

abs

public static int abs(int a)

返回 int 值的絕對值。 如果參數(shù)不是負數(shù),則返回參數(shù)。 如果參數(shù)是否定的,則返回參數(shù)的否定。

請注意,如果參數(shù)等于 Integer#MIN_VALUE 的值,即最負的可表示 int 值,則結(jié)果是相同的值,即為負。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要確定其絕對值的參數(shù)

返回:

參數(shù)的絕對值。

abs

public static long abs(long a)

返回一個 long 值的絕對值。 如果參數(shù)不是負數(shù),則返回參數(shù)。 如果參數(shù)是否定的,則返回參數(shù)的否定。

請注意,如果參數(shù)等于 Long#MIN_VALUE 的值(可表示的最負的 long 值),則結(jié)果是相同的值,即為負。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要確定其絕對值的參數(shù)

返回:

參數(shù)的絕對值。

abs

public static float abs(float a)

返回浮點值的絕對值。 如果參數(shù)不是負數(shù),則返回參數(shù)。 如果參數(shù)是否定的,則返回參數(shù)的否定。 特別案例:

  • 如果參數(shù)為正零或負零,則結(jié)果為正零。
  • 如果參數(shù)是無限的,則結(jié)果是正無窮大。
  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。

換句話說,結(jié)果與表達式的值相同:

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

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要確定其絕對值的參數(shù)

返回:

參數(shù)的絕對值。

abs

public static double abs(double a)

返回雙精度值的絕對值。 如果參數(shù)不是負數(shù),則返回參數(shù)。 如果參數(shù)是否定的,則返回參數(shù)的否定。 特別案例:

  • 如果參數(shù)為正零或負零,則結(jié)果為正零。
  • 如果參數(shù)是無限的,則結(jié)果是正無窮大。
  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。

換句話說,結(jié)果與表達式的值相同:

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

參數(shù):

參數(shù)名稱 參數(shù)描述
a 要確定其絕對值的參數(shù)

返回:

參數(shù)的絕對值。

max

public static int max(int a, int b)

返回兩個 int 值中的較大者。 也就是說,結(jié)果是更接近 Integer#MAX_VALUE 值的參數(shù)。 如果參數(shù)具有相同的值,則結(jié)果是相同的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個論點。
b 另一個論點。

返回:

a 和 b 中的較大者。

max

public static long max(long a, long b)

返回兩個 long 值中的較大者。 也就是說,結(jié)果是參數(shù)更接近 Long#MAX_VALUE 的值。 如果參數(shù)具有相同的值,則結(jié)果是相同的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個論點
b 另一個論點

返回:

a 和 b 中的較大者。

max

public static float max(float a, float b)

返回兩個浮點值中的較大者。 也就是說,結(jié)果是更接近正無窮大的參數(shù)。 如果參數(shù)具有相同的值,則結(jié)果是相同的值。 如果任一值為 NaN,則結(jié)果為 NaN。 與數(shù)值比較運算符不同,此方法認為負零嚴格小于正零。 如果一個參數(shù)為正零而另一個為負零,則結(jié)果為正零。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個論點
b 另一個論點

返回:

a 和 b 中的較大者。

max

public static double max(double a, double b)

返回兩個雙精度值中的較大者。 也就是說,結(jié)果是更接近正無窮大的參數(shù)。 如果參數(shù)具有相同的值,則結(jié)果是相同的值。 如果任一值為 NaN,則結(jié)果為 NaN。 與數(shù)值比較運算符不同,此方法認為負零嚴格小于正零。 如果一個參數(shù)為正零而另一個為負零,則結(jié)果為正零。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個論點。
b 另一個論點。

返回:

a 和 b 中的較大者。

min

public static int min(int a, int b)

返回兩個 int 值中較小的一個。 也就是說,參數(shù)的結(jié)果更接近 Integer#MIN_VALUE 的值。 如果參數(shù)具有相同的值,則結(jié)果是相同的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個論點
b 另一個論點

返回:

a 和 b 中較小的一個。

min

public static long min(long a, long b)

返回兩個 long 值中較小的一個。 也就是說,結(jié)果是參數(shù)更接近 Long#MIN_VALUE 的值。 如果參數(shù)具有相同的值,則結(jié)果是相同的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個論點
b 另一個論點

返回:

a 和 b 中較小的一個。

min

public static float min(float a, float b)

返回兩個浮點值中較小的一個。 也就是說,結(jié)果是更接近負無窮大的值。 如果參數(shù)具有相同的值,則結(jié)果是相同的值。 如果任一值為 NaN,則結(jié)果為 NaN。 與數(shù)值比較運算符不同,此方法認為負零嚴格小于正零。 如果一個參數(shù)為正零而另一個為負零,則結(jié)果為負零。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個論點
b 另一個論點

返回:

a 和 b 中較小的一個。

min

public static double min(double a, double b)

返回兩個雙精度值中較小的一個。 也就是說,結(jié)果是更接近負無窮大的值。 如果參數(shù)具有相同的值,則結(jié)果是相同的值。 如果任一值為 NaN,則結(jié)果為 NaN。 與數(shù)值比較運算符不同,此方法認為負零嚴格小于正零。 如果一個參數(shù)為正零而另一個為負零,則結(jié)果為負零。

參數(shù):

參數(shù)名稱 參數(shù)描述
a 一個論點
b 另一個論點

返回:

a 和 b 中較小的一個。

ulp

public static double ulp(double d)

返回參數(shù)的 ulp 的大小。 double 值的最后一個單位 ulp 是該浮點值與幅度下一個更大的 double 值之間的正距離。 請注意,對于非 NaN x,ulp(-x) == ulp(x)。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮或負無窮,則結(jié)果是正無窮。
  • 如果參數(shù)為正零或負零,則結(jié)果為 Double.MIN_VALUE。
  • 如果參數(shù)為 ±Double.MAX_VALUE,則結(jié)果等于 2971。

參數(shù):

參數(shù)名稱 參數(shù)描述
d 要返回 ulp 的浮點值

返回:

參數(shù)的 ulp 大小

ulp

public static float ulp(float f)

返回參數(shù)的 ulp 的大小。 浮點值的最后一個單位 ulp 是該浮點值與幅度下一個更大的浮點值之間的正距離。 請注意,對于非 NaN x,ulp(-x) == ulp(x)。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮或負無窮,則結(jié)果是正無窮。
  • 如果參數(shù)為正零或負零,則結(jié)果為 Float.MIN_VALUE。
  • 如果參數(shù)為 ±Float.MAX_VALUE,則結(jié)果等于 2104。

參數(shù):

參數(shù)名稱 參數(shù)描述
f 要返回 ulp 的浮點值

返回:

參數(shù)的 ulp 大小

signum

public static double signum(double d)

返回參數(shù)的符號函數(shù); 如果參數(shù)為零,則為零,如果參數(shù)大于零,則為 1.0,如果參數(shù)小于零,則為 -1.0。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是正零或負零,則結(jié)果與參數(shù)相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
d 要返回其符號的浮點值

返回:

參數(shù)的符號函數(shù)

signum

public static float signum(float f)

返回參數(shù)的符號函數(shù); 如果參數(shù)為零,則為零,如果參數(shù)大于零,則為 1.0f,如果參數(shù)小于零,則為 -1.0f。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是正零或負零,則結(jié)果與參數(shù)相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
f 要返回其符號的浮點值

返回:

參數(shù)的符號函數(shù)

sinh

public static double sinh(double x)

返回 double 值的雙曲正弦值。 x 的雙曲正弦定義為 (ex - e-x)/2,其中 e 是 Math#E。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是無限的,則結(jié)果是與參數(shù)相同符號的無窮大。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。

計算結(jié)果必須在精確結(jié)果的 2.5 ulps 范圍內(nèi)。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 要返回其雙曲正弦的數(shù)字。

返回:

x 的雙曲正弦。

cosh

public static double cosh(double x)

返回 double 值的雙曲余弦值。 x 的雙曲余弦定義為 (ex + e-x)/2,其中 e 是 Math#E。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是無限的,那么結(jié)果是正無窮大。
  • 如果參數(shù)為零,則結(jié)果為 1.0。

計算結(jié)果必須在精確結(jié)果的 2.5 ulps 范圍內(nèi)。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 要返回其雙曲余弦的數(shù)字。

返回:

x 的雙曲余弦。

tanh

public static double tanh(double x)

返回 double 值的雙曲正切值。 x 的雙曲正切定義為 (ex - e-x)/(ex + e-x),換言之,Math#sinh/Math#cosh。 請注意,精確 tanh 的絕對值始終小于 1。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。
  • 如果參數(shù)為正無窮大,則結(jié)果為 +1.0。
  • 如果參數(shù)為負無窮大,則結(jié)果為 -1.0。

計算結(jié)果必須在精確結(jié)果的 2.5 ulps 范圍內(nèi)。 對于任何有限輸入,tanh 的結(jié)果必須具有小于或等于 1 的絕對值。請注意,一旦 tanh 的精確結(jié)果在 ±1 的極限值的 ulp 的 1/2 以內(nèi),正確符號的 ±1.0 應(yīng)該是 回來。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 要返回其雙曲正切的數(shù)字。

返回:

x 的雙曲正切。

hypot

public static double hypot(double x, double y)

返回 sqrt(x2 +y2) 沒有中間溢出或下溢。

特別情況:

  • 如果任一參數(shù)是無限的,則結(jié)果是正無窮大。
  • 如果任一參數(shù)為 NaN 且兩個參數(shù)都不是無限的,則結(jié)果為 NaN。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 如果一個參數(shù)保持不變,則另一個參數(shù)的結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 一個值
y 一個值

返回:

sqrt(x2 +y2) 沒有中間溢出或下溢

expm1

public static double expm1(double x)

返回 ex -1。 請注意,對于接近 0 的 x 值,expm1(x) + 1 的精確總和比 exp(x) 更接近 ex 的真實結(jié)果。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮大,那么結(jié)果是正無窮大。
  • 如果參數(shù)為負無窮大,則結(jié)果為 -1.0。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。 任何有限輸入的 expm1 的結(jié)果必須大于或等于 -1.0。 請注意,一旦 ex - 1 的確切結(jié)果在限制值 -1 的 1/2 ulp 范圍內(nèi),則應(yīng)返回 -1.0。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 在計算 ex -1 時將 e 提高到的指數(shù)。

返回:

ex - 1。

log1p

public static double log1p(double x)

返回參數(shù)和 1 之和的自然對數(shù)。請注意,對于較小的值 x,log1p(x) 的結(jié)果比 log( 的浮點計算更接近 ln(1 + x) 的真實結(jié)果 1.0+x)。

特別情況:

  • 如果參數(shù)為 NaN 或小于 -1,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮大,那么結(jié)果是正無窮大。
  • 如果參數(shù)是負數(shù),那么結(jié)果是負無窮大。
  • 如果參數(shù)為零,則結(jié)果為零,符號與參數(shù)相同。

計算結(jié)果必須在精確結(jié)果的 1 ulp 范圍內(nèi)。 結(jié)果必須是半單調(diào)的。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 一個值

返回:

ln(x + 1) 的值,x + 1 的自然對數(shù)

copySign

public static double copySign(double magnitude, double sign)

返回帶有第二個浮點參數(shù)符號的第一個浮點參數(shù)。 請注意,與 StrictMath#copySign(double, double) 方法不同,此方法不需要將 NaN 符號參數(shù)視為正值; 允許實現(xiàn)將某些 NaN 參數(shù)視為正數(shù),將其他 NaN 參數(shù)視為負數(shù),以提高性能。

參數(shù):

參數(shù)名稱 參數(shù)描述
magnitude 提供結(jié)果大小的參數(shù)
sign 提供結(jié)果符號的參數(shù)

返回:

具有大小和符號符號的值。

copySign

public static float copySign(float magnitude, float sign)

返回帶有第二個浮點參數(shù)符號的第一個浮點參數(shù)。 請注意,與 StrictMath#copySign(float, float) 方法不同,此方法不需要將 NaN 符號參數(shù)視為正值; 允許實現(xiàn)將某些 NaN 參數(shù)視為正數(shù),將其他 NaN 參數(shù)視為負數(shù),以提高性能。

參數(shù):

參數(shù)名稱 參數(shù)描述
magnitude 提供結(jié)果大小的參數(shù)
sign 提供結(jié)果符號的參數(shù)

返回:

具有大小和符號符號的值。

getExponent

public static int getExponent(float f)

返回浮點數(shù)表示中使用的無偏指數(shù)。 特別情況:

  • 如果參數(shù)為 NaN 或無窮大,則結(jié)果為 Float#MAX_EXPONENT + 1。
  • 如果參數(shù)為零或次正規(guī),則結(jié)果為 Float#MIN_EXPONENT -1。

參數(shù):

參數(shù)名稱 參數(shù)描述
f 一個浮點數(shù)

返回:

參數(shù)的無偏指數(shù)

getExponent

public static int getExponent(double d)

返回用于表示雙精度的無偏指數(shù)。 特別情況:

  • 如果參數(shù)為 NaN 或無窮大,則結(jié)果為 Double#MAX_EXPONENT + 1。
  • 如果參數(shù)為零或次正規(guī),則結(jié)果為 Double#MIN_EXPONENT -1。

參數(shù):

參數(shù)名稱 參數(shù)描述
d 一個double類型的值

返回:

參數(shù)的無偏指數(shù)

nextAfter

public static double nextAfter(double start, double direction)

返回第二個參數(shù)方向上與第一個參數(shù)相鄰的浮點數(shù)。 如果兩個參數(shù)比較相等,則返回第二個參數(shù)。

特別情況:

  • 如果任一參數(shù)是 NaN,則返回 NaN。
  • 如果兩個參數(shù)都是帶符號的零,則返回方向不變(如果參數(shù)比較相等,則返回第二個參數(shù)的要求暗示了這一點)。
  • 如果 start 是 ±Double#MIN_VALUE 并且 direction 的值使得結(jié)果應(yīng)該具有較小的幅度,則返回與 start 具有相同符號的零。
  • 如果 start 是無限的,并且 direction 的值使得結(jié)果應(yīng)該具有較小的幅度,則返回與 start 具有相同符號的 Double#MAX_VALUE。
  • 如果 start 等于 ± Double#MAX_VALUE 并且 direction 的值使得結(jié)果應(yīng)該具有更大的量級,則返回與 start 符號相同的無窮大。

參數(shù):

參數(shù)名稱 參數(shù)描述
start 開始的浮點值
direction 指示應(yīng)該返回 start 的哪個相鄰數(shù)或 start 的值

返回:

以方向相鄰的浮點數(shù)開始的方向。

nextAfter

public static float nextAfter(float start, double direction)

返回第二個參數(shù)方向上與第一個參數(shù)相鄰的浮點數(shù)。 如果兩個參數(shù)比較相等,則返回與第二個參數(shù)等效的值。

特別情況:

  • 如果任一參數(shù)是 NaN,則返回 NaN。
  • 如果兩個參數(shù)都是帶符號的零,則返回與方向等效的值。
  • 如果 start 是 ±Float#MIN_VALUE 并且 direction 的值使得結(jié)果應(yīng)該具有較小的幅度,則返回與 start 具有相同符號的零。
  • 如果 start 是無限的,并且 direction 的值使得結(jié)果應(yīng)該具有較小的幅度,則返回與 start 具有相同符號的 Float#MAX_VALUE。
  • 如果 start 等于 ± Float#MAX_VALUE 并且 direction 的值使得結(jié)果應(yīng)該具有更大的幅度,則返回與 start 符號相同的無窮大。

參數(shù):

參數(shù)名稱 參數(shù)描述
start 起始浮點值
direction 指示應(yīng)該返回 start 的哪個相鄰數(shù)或 start 的值

返回:

以方向相鄰的浮點數(shù)開始的方向。

nextUp

public static double nextUp(double d)

返回正無窮方向上與 d 相鄰的浮點值。 該方法在語義上等價于 nextAfter(d, Double.POSITIVE_INFINITY); 但是,nextUp 實現(xiàn)可能比其等效的 nextAfter 調(diào)用運行得更快。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮大,則結(jié)果是正無窮大。
  • 如果參數(shù)為零,則結(jié)果為 Double#MIN_VALUE

參數(shù):

參數(shù)名稱 參數(shù)描述
d 起始浮點值

返回:

接近正無窮大的相鄰浮點值。

nextUp

public static float nextUp(float f)

返回在正無窮大方向上與 f 相鄰的浮點值。 這個方法在語義上等價于 nextAfter(f, Float.POSITIVE_INFINITY); 但是,nextUp 實現(xiàn)可能比其等效的 nextAfter 調(diào)用運行得更快。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)是正無窮大,則結(jié)果是正無窮大。
  • 如果參數(shù)為零,則結(jié)果為 Float#MIN_VALUE

參數(shù):

參數(shù)名稱 參數(shù)描述
f 起始浮點值

返回:

接近正無窮大的相鄰浮點值。

nextDown

public static double nextDown(double d)

返回在負無窮方向上與 d 相鄰的浮點值。 這個方法在語義上等價于 nextAfter(d, Double.NEGATIVE_INFINITY); 但是,nextDown 實現(xiàn)可能比其等效的 nextAfter 調(diào)用運行得更快。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)為負無窮大,則結(jié)果為負無窮大。
  • 如果參數(shù)為零,則結(jié)果為 -Double.MIN_VALUE

參數(shù):

參數(shù)名稱 參數(shù)描述
d 起始浮點值

返回:

接近負無窮大的相鄰浮點值。

nextDown

public static float nextDown(float f)

返回在負無窮方向上與 f 相鄰的浮點值。 該方法在語義上等價于 nextAfter(f, Float.NEGATIVE_INFINITY); 但是,nextDown 實現(xiàn)可能比其等效的 nextAfter 調(diào)用運行得更快。

特別情況:

  • 如果參數(shù)為 NaN,則結(jié)果為 NaN。
  • 如果參數(shù)為負無窮大,則結(jié)果為負無窮大。
  • 如果參數(shù)為零,則結(jié)果為 -Float.MIN_VALUE

參數(shù):

參數(shù)名稱 參數(shù)描述
f 起始浮點值

返回:

接近負無窮大的相鄰浮點值。

scalb

public static double scalb(double d, int scaleFactor)

返回四舍五入的 d × 2scaleFactor,就像通過單個正確舍入的浮點乘以雙精度值集的成員一樣。 有關(guān)浮點值集的討論,請參閱 Java 語言規(guī)范。 如果結(jié)果的指數(shù)在 Double#MIN_EXPONENT 和 Double#MAX_EXPONENT 之間,則答案是精確計算的。 如果結(jié)果的指數(shù)大于 Double.MAX_EXPONENT,則返回無窮大。 請注意,如果結(jié)果不正常,則可能會丟失精度; 也就是說,當 scalb(x, n) 為次正規(guī)時, scalb(scalb(x, n), -n) 可能不等于 x。 當結(jié)果為非 NaN 時,結(jié)果的符號與 d 相同。

特別案例:

  • 如果第一個參數(shù)是 NaN,則返回 NaN。
  • 如果第一個參數(shù)是無限的,則返回相同符號的無窮大。
  • 如果第一個參數(shù)為零,則返回相同符號的零。

參數(shù):

參數(shù)名稱 參數(shù)描述
d 要按 2 的冪進行縮放的數(shù)字。
scaleFactor 用于縮放 d 的 2 的冪

返回:

d × 2scaleFactor

scalb

public static float scalb(float f, int scaleFactor)

返回 f × 2scaleFactor 舍入,就好像通過單個正確舍入的浮點乘以浮點值集的成員一樣。 有關(guān)浮點值集的討論,請參閱 Java 語言規(guī)范。 如果結(jié)果的指數(shù)介于 Float#MIN_EXPONENT 和 Float#MAX_EXPONENT 之間,則答案是精確計算的。 如果結(jié)果的指數(shù)大于 Float.MAX_EXPONENT,則返回無窮大。 請注意,如果結(jié)果不正常,則可能會丟失精度; 也就是說,當 scalb(x, n) 為次正規(guī)時, scalb(scalb(x, n), -n) 可能不等于 x。 當結(jié)果為非 NaN 時,結(jié)果的符號與 f 相同。

特別情況:

  • 如果第一個參數(shù)是 NaN,則返回 NaN。
  • 如果第一個參數(shù)是無限的,則返回相同符號的無窮大。
  • 如果第一個參數(shù)為零,則返回相同符號的零。

參數(shù):

參數(shù)名稱 參數(shù)描述
f 要按 2 的冪進行縮放的數(shù)字。
scaleFactor 用于縮放 f 的 2 的冪

返回:

f × 2scaleFactor

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號