包含jsmath源碼的詞條

本文目錄一覽:

js中的math對象有哪些常用的方法,其用法和作用是什麼

abs(x)

返回數的絕對值。

acos(x)

返回數的反餘弦值。

asin(x)

返回數的反正弦值。

atan(x)

以介於 -PI/2 與 PI/2 弧度之間的數值來返回 x 的反正切值。

atan2(y,x)

返回從 x 軸到點 (x,y) 的角度(介於 -PI/2 與 PI/2 弧度之間)。

ceil(x)

對數進行上舍入。

cos(x)

返回數的餘弦。

exp(x)

返回 e 的指數。

floor(x)

對數進行下舍入。

log(x)

返回數的自然對數(底為e)。

max(x,y)

返回 x 和 y 中的最高值。

min(x,y)

返回 x 和 y 中的最低值。

pow(x,y)

返回 x 的 y 次冪。

random()

返回 0 ~ 1 之間的隨機數。

round(x)

把數四捨五入為最接近的整數。

sin(x)

返回數的正弦。

sqrt(x)

返回數的平方根。

tan(x)

返回角的正切。

toSource()

返回該對象的源代碼。

valueOf()

返回 Math 對象的原始值。

作用和用法?數學函數需要什麼用什麼啊。

number-precision 實現js高精度運算 源碼

type numType = number | string;

/**

* @desc 解決浮動運算問題,避免小數點後產生多位數和計算精度損失。

* 問題示例:2.3 + 2.4 = 4.699999999999999,1.0 – 0.9 = 0.09999999999999998

*/

/**

* 把錯誤的數據轉正

* strip(0.09999999999999998)=0.1

*/

function strip(num: numType, precision = 15): number {

  return +parseFloat(Number(num).toPrecision(precision));

}

/**

* Return digits length of a number

* @param {*number} num Input number

*/

function digitLength(num: numType): number {

  // Get digit length of e

  const eSplit = num.toString().split(/[eE]/);

  const len = (eSplit[0].split(‘.’)[1] || ”).length – +(eSplit[1] || 0);

  return len 0 ? len : 0;

}

/**

* 把小數轉成整數,支持科學計數法。如果是小數則放大成整數

* @param {*number} num 輸入數

*/

function float2Fixed(num: numType): number {

  if (num.toString().indexOf(‘e’) === -1) {

    return Number(num.toString().replace(‘.’, ”));

  }

  const dLen = digitLength(num);

  return dLen 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num);

}

/**

* 檢測數字是否越界,如果越界給出提示

* @param {*number} num 輸入數

*/

function checkBoundary(num: number) {

  if (_boundaryCheckingState) {

    if (num Number.MAX_SAFE_INTEGER || num Number.MIN_SAFE_INTEGER) {

      console.warn(`${num} is beyond boundary when transfer to integer, the results may not be accurate`);

    }

  }

}

/**

* 精確乘法

*/

function times(num1: numType, num2: numType, …others: numType[]): number {

  if (others.length 0) {

    return times(times(num1, num2), others[0], …others.slice(1));

  }

  const num1Changed = float2Fixed(num1);

  const num2Changed = float2Fixed(num2);

  const baseNum = digitLength(num1) + digitLength(num2);

  const leftValue = num1Changed * num2Changed;

  checkBoundary(leftValue);

  return leftValue / Math.pow(10, baseNum);

}

/**

* 精確加法

*/

function plus(num1: numType, num2: numType, …others: numType[]): number {

  if (others.length 0) {

    return plus(plus(num1, num2), others[0], …others.slice(1));

  }

  const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));

  return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;

}

/**

* 精確減法

*/

function minus(num1: numType, num2: numType, …others: numType[]): number {

  if (others.length 0) {

    return minus(minus(num1, num2), others[0], …others.slice(1));

  }

  const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));

  return (times(num1, baseNum) – times(num2, baseNum)) / baseNum;

}

/**

* 精確除法

*/

function divide(num1: numType, num2: numType, …others: numType[]): number {

  if (others.length 0) {

    return divide(divide(num1, num2), others[0], …others.slice(1));

  }

  const num1Changed = float2Fixed(num1);

  const num2Changed = float2Fixed(num2);

  checkBoundary(num1Changed);

  checkBoundary(num2Changed);

  // fix: 類似 10 ** -4 為 0.00009999999999999999,strip 修正

  return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) – digitLength(num1))));

}

/**

* 四捨五入

*/

function round(num: numType, ratio: number): number {

  const base = Math.pow(10, ratio);

  return divide(Math.round(times(num, base)), base);

}

let _boundaryCheckingState = true;

/**

* 是否進行邊界檢查,默認開啟

* @param flag 標記開關,true 為開啟,false 為關閉,默認為 true

*/

// 這裡可以設置邊界檢查(默認是true)

function enableBoundaryChecking(flag = true) {

  _boundaryCheckingState = flag;

}

// 輸出上面的方法

export { strip, plus, minus, times, divide, round, digitLength, float2Fixed, enableBoundaryChecking };

export default {

  strip,

  plus,

  minus,

  times,

  divide,

  round,

  digitLength,

  float2Fixed,

  enableBoundaryChecking,

};

JavaScript Math.random()問題

那是因為javascript把min_num作為了默認字符串處理了。

只需要把var num=Math.random()*(max_num-min_num)+min_num;改一下就可以了

var num=Math.random()*(max_num-min_num)+min_num*1;

強制把min_num作為數字處理

JS中Math[this

在javascript中對象獲取屬性的方式有兩種,一種是使用運算符「.」跟上屬性名,一種是使用[‘屬性名’]的方式。比如:

window.location 與window[‘location’]都可以訪問到window對象的location屬性。

點運算符(成員運算符)使用方便,但是在需要動態獲取對象屬性時,也就是說,我要獲取的屬性它的名稱本身也是通過傳參確定時,就需要使用方括號的方式,你現在就屬於這種情況。如果你有過反射方面的編程經驗就不難理解了。

js Math 對象的方法

1.丟棄小數部分,保留整數部分

parseInt(5/2)

2.向上取整,有小數就整數部分加1

Math.ceil(5/2)

3,四捨五入.

Math.round(5/2)

4,向下取整

Math.floor(5/2)

Math

對象方法

FF:

Firefox,

IE:

Internet

Explorer

方法

描述

FF

IE

abs(x)

返回數的絕對值。

1

3

acos(x)

返回數的反餘弦值。

1

3

asin(x)

返回數的反正弦值。

1

3

atan(x)

以介於

-PI/2

PI/2

弧度之間的數值來返回

x

的反正切值。

1

3

atan2(y,x)

返回從

x

軸到點

(x,y)

的角度(介於

-PI/2

PI/2

弧度之間)。

1

3

ceil(x)

對數進行上舍入。

1

3

cos(x)

返回數的餘弦。

1

3

exp(x)

返回

e

的指數。

1

3

floor(x)

對數進行下舍入。

1

3

log(x)

返回數的自然對數(底為e)。

1

3

max(x,y)

返回

x

y

中的最高值。

1

3

min(x,y)

返回

x

y

中的最低值。

1

3

pow(x,y)

返回

x

y

次冪。

1

3

random()

返回

~

1

之間的隨機數。

1

3

round(x)

把數四捨五入為最接近的整數。

1

3

sin(x)

返回數的正弦。

1

3

sqrt(x)

返回數的平方根。

1

3

tan(x)

返回角的正切。

1

3

toSource()

返回該對象的源代碼。

1

valueOf()

返回

Math

對象的原始值。

1

4

js中Math的幾個函數

console.log(Object.getOwnPropertyNames(Math).filter((function (name) {

            return typeof Math[name] === ‘function’;

        })).length); //有35個函數

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/256990.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:43
下一篇 2024-12-15 12:43

相關推薦

  • 雲智直聘 源碼分析

    本文將會對雲智直聘的源碼進行分析,包括前端頁面和後端代碼,幫助讀者了解其架構、技術實現以及對一些常見的問題進行解決。通過本文的閱讀,讀者將會了解到雲智直聘的特點、優勢以及不足之處,…

    編程 2025-04-29
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28
  • 源碼是什麼

    源碼是一段計算機程序的原始代碼,它是程序員所編寫的可讀性高、理解性強的文本。在計算機中,源碼是指編寫的程序代碼,這些代碼按照一定規則排列,被計算機識別並執行。 一、源碼的組成 源碼…

    編程 2025-04-27
  • Go源碼閱讀

    Go語言是Google推出的一門靜態類型、編譯型、並髮型、語法簡單的編程語言。它因具有簡潔高效,內置GC等優秀特性,被越來越多的開發者所鍾愛。在這篇文章中,我們將介紹如何從多個方面…

    編程 2025-04-27
  • Python怎麼看源碼

    本文將從以下幾個方面詳細介紹Python如何看源碼,幫助讀者更好地了解Python。 一、查看Python版本 在查看Python源碼之前,首先需要確認Python版本。可以在命令…

    編程 2025-04-27
  • 源碼審計面試題用法介紹

    在進行源碼審計面試時,可能會遇到各種類型的問題,本文將以實例為基礎,從多個方面對源碼審計面試題進行詳細闡述。 一、SQL注入 SQL注入是常見的一種攻擊方式,攻擊者通過在輸入的參數…

    編程 2025-04-27
  • 對3ue源碼的多方面闡述

    一、3ue源碼簡述 3ue是一款基於Vue.js開發的富文本編輯器,支持圖片上傳、粘貼、表格、代碼塊等多種功能,具有輕量、可定製、易擴展的特點。下面我們將從多個方面對3ue源碼進行…

    編程 2025-04-22
  • 全面解析ptable:從使用到源碼分析

    ptable是一個輕量級的DOM操作插件,主要用於表格的操作和功能增強。它的使用非常靈活,支持多種操作方式,包括添加、刪除、修改、排序、篩選等,可以大大提高表格的效率和易用性。 一…

    編程 2025-04-22
  • 深入分析Redis源碼

    一、Redis簡介 Redis是一個開源的內存數據結構存儲系統,可以用作數據庫、緩存、消息隊列等。Redis支持多種數據類型,包括字符串、哈希、列表、集合等。Redis基於C語言進…

    編程 2025-04-12
  • JDK源碼閱讀詳解

    一、jdk源碼閱讀順序 首先,在開始閱讀JDK源碼之前,需要按照正確的順序來閱讀代碼。一般建議按照以下順序進行閱讀: 1. 先從Java SE的API入手,了解它提供了哪些功能,及…

    編程 2025-04-12

發表回復

登錄後才能評論