」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 掌握 JavaScript 的數學物件:內建數學函數和屬性的綜合指南

掌握 JavaScript 的數學物件:內建數學函數和屬性的綜合指南

發佈於2024-11-07
瀏覽:739

Mastering JavaScript

The JavaScript Math Object: An Overview

The JavaScript Math object is a built-in object that provides a collection of mathematical functions and constants. It is not a constructor, so you cannot create instances of it; instead, it is used directly through its static methods and properties.

1. Constants

The Math object includes several constants that are useful for mathematical calculations:

  • Math.E: The base of natural logarithms, approximately equal to 2.718.
  • Math.LN2: The natural logarithm of 2, approximately equal to 0.693.
  • Math.LN10: The natural logarithm of 10, approximately equal to 2.303.
  • Math.LOG2E: The base-2 logarithm of E, approximately equal to 1.442.
  • Math.LOG10E: The base-10 logarithm of E, approximately equal to 0.434.
  • Math.PI: The ratio of the circumference of a circle to its diameter, approximately equal to 3.14159.
  • Math.SQRT1_2: The square root of 1/2, approximately equal to 0.707.
  • Math.SQRT2: The square root of 2, approximately equal to 1.414.

2. Methods

The Math object provides several methods for performing mathematical operations:

  • Math.abs(x): Returns the absolute value of x.
  Math.abs(-5); // 5
  • Math.ceil(x): Rounds x up to the nearest integer.
  Math.ceil(4.2); // 5
  • Math.floor(x): Rounds x down to the nearest integer.
  Math.floor(4.7); // 4
  • Math.round(x): Rounds x to the nearest integer.
  Math.round(4.5); // 5
  • Math.max(...values): Returns the largest of zero or more numbers.
  Math.max(1, 5, 3); // 5
  • Math.min(...values): Returns the smallest of zero or more numbers.
  Math.min(1, 5, 3); // 1
  • Math.random(): Returns a pseudo-random number between 0 (inclusive) and 1 (exclusive).
  Math.random(); // e.g., 0.237
  • Math.pow(base, exponent): Returns the base raised to the exponent power.
  Math.pow(2, 3); // 8
  • Math.sqrt(x): Returns the square root of x.
  Math.sqrt(9); // 3
  • Math.trunc(x): Returns the integer part of x, removing any fractional digits.
  Math.trunc(4.9); // 4

3. Usage Examples

Here are a few practical examples of how you might use the Math object:

  • Generating a Random Integer
  function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min   1))   min;
  }
  console.log(getRandomInt(1, 10)); // e.g., 7
  • Calculating the Hypotenuse
  function calculateHypotenuse(a, b) {
    return Math.sqrt(Math.pow(a, 2)   Math.pow(b, 2));
  }
  console.log(calculateHypotenuse(3, 4)); // 5

4. Limitations and Notes

  • Precision Issues: Floating-point arithmetic can lead to precision issues. For example, Math.sqrt(2) * Math.sqrt(2) might not exactly equal 2 due to rounding errors.
  • Not a Constructor: The Math object does not have constructor capabilities. All properties and methods are static.

Math Object Methods and Properties


1. Math.abs(x)

Returns the absolute value of x.

console.log(Math.abs(-10)); // 10
console.log(Math.abs(5.5)); // 5.5

2. Math.acos(x)

Returns the arccosine (inverse cosine) of x, in radians.

console.log(Math.acos(1)); // 0
console.log(Math.acos(0)); // 1.5707963267948966 (π/2)

3. Math.acosh(x)

Returns the hyperbolic arccosine of x.

console.log(Math.acosh(1)); // 0
console.log(Math.acosh(2)); // 1.3169578969248166

4. Math.asin(x)

Returns the arcsine (inverse sine) of x, in radians.

console.log(Math.asin(0)); // 0
console.log(Math.asin(1)); // 1.5707963267948966 (π/2)

5. Math.asinh(x)

Returns the hyperbolic arcsine of x.

console.log(Math.asinh(0)); // 0
console.log(Math.asinh(1)); // 0.881373587019543

6. Math.atan(x)

Returns the arctangent (inverse tangent) of x, in radians.

console.log(Math.atan(1)); // 0.7853981633974483 (π/4)
console.log(Math.atan(0)); // 0

7. Math.atan2(y, x)

Returns the arctangent of the quotient of its arguments, in radians.

console.log(Math.atan2(1, 1)); // 0.7853981633974483 (π/4)
console.log(Math.atan2(-1, -1)); // -2.356194490192345 (-3π/4)

8. Math.atanh(x)

Returns the hyperbolic arctangent of x.

console.log(Math.atanh(0)); // 0
console.log(Math.atanh(0.5)); // 0.5493061443340549

9. Math.cbrt(x)

Returns the cubic root of x.

console.log(Math.cbrt(27)); // 3
console.log(Math.cbrt(-8)); // -2

10. Math.ceil(x)

Rounds x upwards to the nearest integer.

console.log(Math.ceil(4.2)); // 5
console.log(Math.ceil(-4.7)); // -4

11. Math.clz32(x)

Returns the number of leading zeros in the 32-bit binary representation of x.

console.log(Math.clz32(1)); // 31
console.log(Math.clz32(0x80000000)); // 0

12. Math.cos(x)

Returns the cosine of x (where x is in radians).

console.log(Math.cos(0)); // 1
console.log(Math.cos(Math.PI)); // -1

13. Math.cosh(x)

Returns the hyperbolic cosine of x.

console.log(Math.cosh(0)); // 1
console.log(Math.cosh(1)); // 1.5430806348152437

14. Math.E

Returns Euler's number, approximately 2.718.

console.log(Math.E); // 2.718281828459045

15. Math.exp(x)

Returns the value of e raised to the power of x.

console.log(Math.exp(1)); // 2.718281828459045
console.log(Math.exp(0)); // 1

16. Math.expm1(x)

Returns the value of e raised to the power of x, minus 1.

console.log(Math.expm1(1)); // 1.718281828459045
console.log(Math.expm1(0)); // 0

17. Math.floor(x)

Rounds x downwards to the nearest integer.

console.log(Math.floor(4.7)); // 4
console.log(Math.floor(-4.2)); // -5

18. Math.fround(x)

Returns the nearest (32-bit single precision) float representation of x.

console.log(Math.fround(1.337)); // 1.336914
console.log(Math.fround(1.5)); // 1.5

19. Math.LN2

Returns the natural logarithm of 2, approximately 0.693.

console.log(Math.LN2); // 0.6931471805599453

20. Math.LN10

Returns the natural logarithm of 10, approximately 2.302.

console.log(Math.LN10); // 2.302585092994046

21. Math.log(x)

Returns the natural logarithm (base e) of x.

console.log(Math.log(Math.E)); // 1
console.log(Math.log(10)); // 2.302585092994046

22. Math.log10(x)

Returns the base-10 logarithm of x.

console.log(Math.log10(10)); // 1
console.log(Math.log10(100)); // 2

23. Math.LOG10E

Returns the base-10 logarithm of e, approximately 0.434.

console.log(Math.LOG10E); // 0.4342944819032518

24. Math.log1p(x)

Returns the natural logarithm of 1 x.

console.log(Math.log1p(1)); // 0.6931471805599453
console.log(Math.log1p(0)); // 0

25. Math.log2(x)

Returns the base-2 logarithm of x.

console.log(Math.log2(2)); // 1
console.log(Math.log2(8)); // 3

26. Math.LOG2E

Returns the base-2 logarithm of e, approximately 1.442.

console.log(Math.LOG2E); // 1.4426950408889634

27. Math.max(...values)

Returns the largest of zero or more numbers.

console.log(Math.max(1, 5, 3)); // 5
console.log(Math.max(-1, -5, -3)); // -1

28. Math.min(...values)

Returns the smallest of zero or more numbers.

console.log(Math.min(1, 5, 3)); // 1
console.log(Math.min(-1, -5, -3)); // -5

29. Math.PI

Returns the value of π, approximately 3.14159.

console.log(Math.PI); // 3.141592653589793

30. Math.pow(base, exponent)

Returns the value of base raised to the power of exponent.

console.log(Math.pow(2, 3)); // 8
console.log(Math.pow(5, 0)); // 1

31. Math.random()

Returns a pseudo-random number between 0 (inclusive) and 1 (exclusive).

console.log(Math.random()); // e.g., 0.237

32. Math.round(x)

Rounds x to the nearest integer.

console.log(Math.round(4.5)); // 5
console.log(Math.round(4.4)); // 4

33. Math.sign(x)

Returns the sign of a number, indicating whether the number is positive, negative, or zero.

console.log(Math.sign(-5)); // -1
console.log(Math.sign(0)); // 0
console.log(Math.sign(5)); // 1

34. Math.sin(x)

Returns the sine of x (where x is in radians).

console.log(Math.sin(0)); // 0
console.log(Math.sin(Math.PI / 2)); // 1

35. Math.sinh(x)

Returns the hyperbolic sine of x.

console.log(Math.sinh(0)); // 0
console.log(Math.sinh(1)); // 1.1752011936438014

36. Math.sqrt(x)

Returns the square root of x.

console.log(Math.sqrt(9)); // 3
console.log(Math.sqrt(16));

 // 4

37. Math.SQRT1_2

Returns the square root of 1/2, approximately 0.707.

console.log(Math.SQRT1_2); // 0.7071067811865476

38. Math.SQRT2

Returns the square root of 2, approximately 1.414.

console.log(Math.SQRT2); // 1.4142135623730951

39. Math.tan(x)

Returns the tangent of x (where x is in radians).

console.log(Math.tan(0)); // 0
console.log(Math.tan(Math.PI / 4)); // 1

40. Math.tanh(x)

Returns the hyperbolic tangent of x.

console.log(Math.tanh(0)); // 0
console.log(Math.tanh(1)); // 0.7615941559557649

41. Math.trunc(x)

Returns the integer part of a number by removing any fractional digits.

console.log(Math.trunc(4.9)); // 4
console.log(Math.trunc(-4.9)); // -4
版本聲明 本文轉載於:https://dev.to/engrsakib/mastering-javascripts-math-object-a-comprehensive-guide-to-built-in-mathematical-functions-and-properties-1c2i?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Firestore 如何優化社群網路時間軸以實現可擴充性?
    Firestore 如何優化社群網路時間軸以實現可擴充性?
    使用Firestore 優化社交網路時間軸在設計具有提要和關注功能的社交網路時,資料庫可擴展性對於處理潛在問題至關重要大型數據集。 Firebase 的即時資料庫帶來了可擴展性挑戰,特別是在儲存使用者時間軸的方法方面。要解決這些問題,請考慮過渡到 Firestore。 優化的資料庫結構Firesto...
    程式設計 發佈於2024-11-08
  • 如何解決將物件數組作為函數參數傳遞時的錯誤?
    如何解決將物件數組作為函數參數傳遞時的錯誤?
    類型提示:物件陣列將物件陣列作為參數傳遞給函數時,如果未指定參數類型。例如,考慮以下程式碼:class Foo {} function getFoo(Foo $f) {}嘗試將 Foo 物件陣列傳遞給 getFoo 將導致致命錯誤:Argument 1 passed to getFoo() must...
    程式設計 發佈於2024-11-08
  • 為什麼 iOS 裝置上缺少 CSS 捲軸?
    為什麼 iOS 裝置上缺少 CSS 捲軸?
    iOS上無法顯示有CSS Overflow的捲軸為iPad開發網站時,使用CSS屬性overflow: auto來啟用div內的捲軸可能無效。儘管兩指滾動手勢功能正常,但捲軸仍然隱藏。嘗試同時使用溢出:自動和溢出:滾動不會產生任何結果。 iOS行為不幸的是,溢位:自動和捲動都不會在iOS裝置上產生捲...
    程式設計 發佈於2024-11-08
  • Java中如何從執行緒操作傳回值?
    Java中如何從執行緒操作傳回值?
    執行緒操作回傳值在多執行緒程式設計中,執行緒之間的互動往往需要交換資料。常見的情況是嘗試檢索在單獨執行緒中執行的操作的結果。 請考慮下面的範例程式碼:public void test() { Thread uiThread = new HandlerThread("UIHandle...
    程式設計 發佈於2024-11-08
  • Python 簡介:)
    Python 簡介:)
    歷史 Python 由 Guido van Rossum 創建,首次發佈於 1991 年。它旨在優先考慮程式碼的可讀性和簡單性,從而提高開發人員的工作效率。 「Python」 的靈感來自 BBC 電視節目 「Monty Python's Flying Circus」,van...
    程式設計 發佈於2024-11-08
  • 學習 Go 結構最終如何讓我愛上編碼
    學習 Go 結構最終如何讓我愛上編碼
    「我仍然記得早期與代碼搏鬥的日子。 基本的東西?我正要到那裡。但後來出現了結構體,一切都變得模糊起來。我不斷地破壞東西,我的程式碼一團糟。我做錯了什麼? 直到我坐下來,學習了 Go 結構體的基礎知識,並開始有效地使用它們,事情才終於有了進展。那是轉捩點。突然間,程式碼變得更有組織、更有效率、更乾淨...
    程式設計 發佈於2024-11-08
  • MERN 堆疊仍然有效嗎?
    MERN 堆疊仍然有效嗎?
    Remember when the MERN stack was the Beyoncé of web development stacks? It was everywhere, and if you weren’t using it, you were probably missing out ...
    程式設計 發佈於2024-11-08
  • 什麼時候需要在 Tkinter 中呼叫 `mainloop()`?
    什麼時候需要在 Tkinter 中呼叫 `mainloop()`?
    在 Tkinter 應用程式中呼叫 mainloop在 Tkinter 中,mainloop 是實現視窗渲染和事件處理的基本功能。與流行的看法相反,並不總是需要在互動式 shell 環境中明確呼叫 mainloop。然而,這種便利性在 shell 之外並不適用。 mainloop 的角色mainlo...
    程式設計 發佈於2024-11-08
  • 如何解決將靜態 C 庫與 C++ 程式碼連結時出現「未定義的引用」錯誤?
    如何解決將靜態 C 庫與 C++ 程式碼連結時出現「未定義的引用」錯誤?
    對用C 程式碼連結靜態C 函式庫時的錯誤的未定義引用當嘗試用C 程式碼連結靜態C 函式庫時,您可以儘管修改了連結順序,但仍遇到「未定義的引用」錯誤。此問題是由 C 和 C 編譯創建的不同符號名稱(稱為“名稱修飾”)引起的。 在 C 中,連結器在錯誤訊息中顯示分解的符號名稱,這可能會造成混淆。使用“n...
    程式設計 發佈於2024-11-08
  • 書籍:學習 JavaScript 設計模式
    書籍:學習 JavaScript 設計模式
    本書探討了 JavaScript 中常見軟體設計模式的實作和使用。雖然根據最新的最佳實踐,一些示例可能稍微過時,但它們對於維護遺留系統的人來說仍然很有價值。 對於初學者: 它是對軟體設計模式的出色介紹。然而,對於那些程式設計經驗有限的人來說,這些模式解決的問題可能不太熟悉。 ...
    程式設計 發佈於2024-11-08
  • 了解命令式程式設計和聲明式程式設計之間的區別
    了解命令式程式設計和聲明式程式設計之間的區別
    當我剛開始學習React時,我的老師說:「JavaScript是命令式編程,而React是聲明式編程。」然而,一開始這對我來說不太有意義。因此,我決定將其分解以更好地理解其中的差異。 將命令式和聲明式程式設計與披薩進行比較? 為了更容易理解,讓我們來比較一下這兩種烹飪方法。 ...
    程式設計 發佈於2024-11-08
  • 如何在JavaScript中進行穩定排序以保持元素順序的一致性?
    如何在JavaScript中進行穩定排序以保持元素順序的一致性?
    JavaScript 中的穩定排序演算法對資料進行排序時,保留相等元素的原始順序對於穩定的排序演算法至關重要。在這種情況下,我們的目標是按給定順序對具有特定鍵的物件陣列進行排序,同時保持元素順序一致性。 穩定排序技術有趣的是,甚至非穩定排序函數可以實現穩定排序。透過在排序前捕捉每個元素的初始位置,我...
    程式設計 發佈於2024-11-08
  • npm 與 npx
    npm 與 npx
    如果您一直在使用 Node.js,您可能遇到過 npm 和 npx。 雖然它們聽起來很相似且都是 Node.js 生態系統不可或缺的一部分,但它們有不同的用途。這篇文章將探討 npm 和 npx 之間的差異,幫助您了解何時以及為何使用它們。 什麼是NPM? NPM 是 Node...
    程式設計 發佈於2024-11-08
  • Python 中的鍊式賦值如何運作?它們真的相當於多個順序分配嗎?
    Python 中的鍊式賦值如何運作?它們真的相當於多個順序分配嗎?
    理解Python 中的鍊式賦值Python 中的鍊式賦值,例如「x = y = somefunction()」這樣的表達式,引發了人們的關注關於它們與多個順序賦值的等價性的討論(“x = somefunction(); y = somefunction()”)。為了澄清這個問題,讓我們詳細探討一下鍊...
    程式設計 發佈於2024-11-08
  • 如何使用 Gorilla Websocket 在 Go Websocket 應用程式中向特定用戶端發送目標訊息?
    如何使用 Gorilla Websocket 在 Go Websocket 應用程式中向特定用戶端發送目標訊息?
    Go with Gorilla Websocket 中的特定客戶端訊息傳遞在websocket 通訊領域,向特定客戶端發送訊息的能力對於建立即時應用程式至關重要。然而,預設的 websocket 範例通常會示範同時向所有連線的用戶端廣播訊息。 為了解決這個問題,我們可以採用一種方法,為每個客戶端分配...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3