Js中Math物件
Js中Math物件
Math
是一個內建物件,它擁有一些數學常數屬性和數學函式方法,Math
用於Number
型別,其不支援BigInt
。
描述
Math
不是一個函式物件,也就是說Math
不是一個構造器,Math
的所有屬性與方法都是靜態的,例如引用圓周率的寫法是Math.PI
,Math
的常量是使用JavaScript
中的全精度浮點數來定義的,需要注意的是,很多Math
的函式都有一個精度,而且這個精度在不同實現中也是不相同的,這意味著不同的瀏覽器會給出不同的結果,甚至在不同的系統或架構下,相同的Js
引擎也會給出不同的結果,另外三角函式sin()
、cos()
、tan()
、asin()
、acos()
、atan()
和atan2()
返回的值是弧度而非角度。若要轉換,弧度除以Math.PI / 180
即可轉換為角度,同理角度乘以這個數則能轉換為弧度。
console.log(Math.PI); // 3.141592653589793
console.log(Math.abs(-1)); // 1
console.log(Math.pow(2, 3)); // 8
屬性
Math.E
: 尤拉常數,也是自然對數的底數,約等於2.718
。Math.LN2
:2
的自然對數,約等於0.693
。Math.LN10
:10
的自然對數,約等於2.303
。Math.LOG2E
: 以2
為底的E
的對數,約等於1.443
。Math.LOG10E
: 以10
為底的E
的對數,約等於0.434
。Math.PI
: 圓周率,一個圓的周長和直徑之比,約等於3.14159
。Math.SQRT1_2
:½
的平方根,同時也是2
的平方根的倒數,約等於0.707
。Math.SQRT2
:2
的平方根,約等於1.414
。
方法
Math.abs()
Math.abs(x)
Math.abs(x)
函式返回指定數字x
的絕對值。
console.log(Math.abs(-1)); // 1
Math.acos()
Math.acos(x)
Math.acos()
返回一個數的反餘弦值。
∀x∊[-1;1], Math.acos(x) = arccos(x) = the unique y∊[0;π] such that cos(y) = x
console.log(Math.acos(-1)); // 3.141592653589793
Math.acosh()
Math.acosh(x)
Math.acosh()
函式返回一個數的反雙曲餘弦值。
∀x≥1, Math.acosh(x) = arcosh(x) = the unique y≥0 such that cosh(y) = x
console.log(Math.acosh(1)); // 0
Math.asin()
Math.asin(x)
Math.asin()
方法返回一個數值的反正弦。
∀x∊[-1;1], Math.asin(x) = arcsin(x) = the unique y∊[- π/2 ; π/2 ] such that sin(y) = x
console.log(Math.asin(0)); // 0
Math.asinh()
Math.asinh(x)
Math.asinh()
返回一個數值的反雙曲正弦值。
Math.asinh(x) = arsinh(x) = the unique y such that sinh(y) = x
console.log(Math.asinh(0)); // 0
Math.atan()
Math.atan(x)
Math.atan()
函式返回一個數值的反正切。
Math.atan(x) = arctan(x) = the unique y∊[- π/2 ; π/2 ] such that tan(y) = x
console.log(Math.atan(0)); // 0
Math.atanh()
Math.atanh(x)
Math.atanh()
函式返回一個數值反雙曲正切值。
∀x∊(-1,1), Math.atanh(x) = arctanh(x) = the unique y such that tanh(y) = x
console.log(Math.atanh(0)); // 0
Math.atan2()
Math.atan2(y, x)
Math.atan2()
返回從原點(0,0)
到(x,y)
點的線段與x軸正方向之間的平面角度(弧度值),也就是Math.atan2(y,x)
。
console.log(Math.atan2(15, 90)); // 0.16514867741462683
Math.cbrt()
Math.cbrt(x)
Math.cbrt()
函式返回任意數字的立方根。
console.log(Math.cbrt(27)); // 3
Math.ceil()
Math.ceil(x)
Math.ceil()
函式返回大於或等於一個給定數字的最小整數,即向上取整。
console.log(Math.ceil(6.6)); // 7
Math.clz32()
Math.clz32(x)
Math.clz32()
函式返回一個數字在轉換成32
無符號整形數字的二進位制形式後,開頭的0
的個數, 比如1000000
轉換成32
位無符號整形數字的二進位制形式後是00000000000011110100001001000000
,開頭的0
的個數是12
個,則Math.clz32(1000000)
返回12
。
console.log(Math.clz32(10)); // 28
Math.cos()
Math.cos(x)
Math.cos()
函式返回一個數值的餘弦值。
console.log(Math.clz32(10)); // 28
Math.cosh()
Math.cosh(x)
Math.cosh()
函式返回數值的雙曲餘弦函式。
console.log(Math.cosh(0)); // 1
Math.exp()
Math.exp(x)
Math.exp()
函式返回e^x
,x
表示引數,e
是自然對數的底數約2.718281828459045
。
console.log(Math.exp(2)); // 7.38905609893065
Math.expm1()
Math.expm1(x)
Math.exp()
函式返回e^x -1
,x
表示引數,e
是自然對數的底數約2.718281828459045
。
console.log(Math.expm1(2)); // 6.38905609893065
Math.floor()
Math.floor()
返回小於或等於一個給定數字的最大整數,即向下取整。
console.log(Math.floor(6.6)); // 6
Math.fround()
Math.fround(doubleFloat)
Math.fround()
可以將任意的數字轉換為離它最近的單精度浮點數形式的數字。JavaScript
內部使用64
位的雙浮點數字,支援很高的精度。但是有時需要用32
位浮點數字,比如從一個Float32Array
讀取值時,這時會產生混亂,檢查一個64
位浮點數和一個32
位浮點數是否相等會失敗,即使二個數字幾乎一模一樣,要解決這個問題,可以使用Math.fround()
來將64
位的浮點數轉換為32
位浮點數,在內部JavaScript
繼續把這個數字作為64
位浮點數看待,僅僅是在尾數部分的第23
位執行了舍入到偶”的操作,並將後續的尾數位設定為0
,如果數字超出32
位浮點數的範圍,則返回Infinity
或-Infinity
。
// 數字1.5可以在二進位制數字系統中精確表示,32位和64位的值相同
console.log(Math.fround(1.5) === 1.5); // true
// 數字6.6卻無法在二進位制數字系統中精確表示,所以32位和64位的值是不同的
console.log(Math.fround(6.6) === 6.6); // false
// 在某些精度不高的場合下,可以通過將二個浮點數轉換成32位浮點數進行比較,以解決64位浮點數比較結果不正確的問題
console.log(0.1 + 0.2 === 0.3); //false
var equal = (v1, v2) => Math.fround(v1) === Math.fround(v2);
console.log(equal(0.1 + 0.2, 0.3)); // true
Math.hypot()
Math.hypot([value1[,value2, ...]])
Math.hypot()
函式返回所有引數的平方和的平方根。本函式比Math.sqrt()
更簡單也更快,只需要呼叫Math.hypot(v1, v2)
或Math.hypot(v1, v2, v3, v4, ...)
,其還避免了幅值過大的問題,Js
中最大的雙精度浮點數是Number.MAX_VALUE = 1.797...e+308
,如果計算的數字比約1e154
大,計算其平方值會返回Infinity
,使計算的的結果出現問題。
console.log(Math.hypot(3, 4)); // 5
Math.imul()
Math.imul(a, b)
Math.imul()
函式將兩個引數分別轉換為32
位整數,相乘後返回32
位結果,類似C
語言的32
位整數相乘。
console.log(Math.imul(0xffffffff, 1)); // -1
Math.log()
Math.log(x)
Math.log()
函式返回一個數的自然對數。
∀x>0, Math.log(x) = ln(x) = the unique y such that e^y = x
console.log(Math.log(Math.E)); // 1
Math.log10()
Math.log10(x)
Math.log10()
函式返回一個數字以10
為底的對數。
console.log(Math.log10(100)); // 2
Math.log1p()
Math.log1p(x)
Math.log1p()
函式返回一個數字加1
後的自然對數, 既log(x+1)
。
console.log(Math.log1p(Math.E-1)); // 1
Math.log2()
Math.log2(x)
Math.log2()
函式返回一個數字以2
為底的對數。
console.log(Math.log2(8)); // 3
Math.max()
Math.max(value1[,value2, ...])
Math.max()
函式返回一組數中的最大值。
console.log(Math.max(1, 2, 3)); // 3
// 在陣列中應用
console.log(Math.max.apply(null, [1, 2, 3])); // 3 // 利用了apply的傳參特性
console.log(Math.max(...[1, 2, 3])); // 3 // 利用了 ES6 Spread 操作符
Math.min()
Math.min([value1[,value2, ...]])
Math.min()
返回零個或更多個數值的最小值。
console.log(Math.min(1, 2, 3)); // 1
// 在陣列中應用
console.log(Math.min.apply(null, [1, 2, 3])); // 1 // 利用了apply的傳參特性
console.log(Math.min(...[1, 2, 3])); // 1 // 利用了 ES6 Spread 操作符
Math.pow()
Math.pow(base, exponent)
Math.pow()
函式返回基數base
的指數exponent
次冪,即base^exponent
。
console.log(Math.pow(2, 3)); // 8
Math.random()
Math.random()
Math.random()
函式返回一個浮點數,偽隨機數在範圍從0
到小於1
,也就是說從0
(包括0
)往上,但是不包括1
,然後可以縮放到所需的範圍,實現將初始種子選擇到隨機數生成演算法,其不能被使用者選擇或重置。
console.log(Math.random()); // 0.20022678953392647
function randomInt(min=0, max=1) { // 生成隨機整數
return min + ~~((max-min)*Math.random()); // min <= random < max
}
randomInt(1, 9); // 5
Math.round()
Math.round(x)
Math.round()
函式返回一個數字四捨五入後最接近的整數。
console.log(Math.round(0.5)); // 1
Math.sign()
Math.sign(x)
Math.sign()
函式返回一個數字的符號, 指示數字是正數,負數還是零。此函式共有5
種返回值, 分別是1, -1, 0, -0, NaN
代表的各是正數,負數,正零,負零,NaN
。
console.log(Math.sign(0.5)); // 1
Math.sin()
Math.sin(x)
Math.sin()
函式返回一個數值的正弦值。
console.log(Math.sin(Math.PI / 2)); // 1
Math.sinh()
Math.sinh(x)
Math.sinh()
函式返回一個數字的雙曲正弦值。
console.log(Math.sinh(0)); // 0
Math.sqrt()
Math.sqrt(x)
Math.sqrt()
函式返回一個數的平方根。
∀x≥0, Math.sqrt(x) = x = the unique y≥0 such that y^2 = x
console.log(Math.sqrt(9)); // 3
Math.tan()
Math.tan(x)
Math.tan()
方法返回一個數值的正切值。
console.log(Math.tan(0)); // 0
Math.tanh()
Math.tanh(x)
Math.tanh()
函式將會返回一個數的雙曲正切函式值。
console.log(Math.tanh(0)); // 0
Math.trunc()
Math.trunc(value)
Math.trunc()
方法會將數字的小數部分去掉,只保留整數部分。
console.log(Math.trunc(1.1)); // 1
每日一題
https://github.com/WindrunnerMax/EveryDay
參考
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math
相關文章
- JS中的Math物件,陣列,和Date物件JS物件陣列
- JavaScript Math 物件JavaScript物件
- javaScript中Math內建物件基本方法入門JavaScript物件
- js可以使用 Math(算數) 物件生成隨機數JS物件隨機
- JavaScript Math物件新增特性JavaScript物件
- JavaScript 複習之 Math 物件JavaScript物件
- Js Math隨機數JS隨機
- JS中的JSON物件JSON物件
- JS取整,四捨五入,取絕對值等Math物件常用方法JS物件
- javascript基礎(Math物件)(二十二)JavaScript物件
- js中的BOM物件JS物件
- js中事件物件eventJS事件物件
- JS中的原型物件JS原型物件
- JavaScript課程——Day07(物件簡介、Math物件、時間物件、字串物件)JavaScript物件字串
- VUE js中複製物件 JSONVue物件JSON
- js 中的json物件和mapJSON物件
- 全面解讀Math物件及位運算物件
- js中bom物件有哪些JS物件
- JS中建立物件的方法JS物件
- [寫作中...]Js物件導向(2): 建立物件JS物件
- js 去掉陣列物件中的重複物件JS陣列物件
- js中給陣列中物件去重JS陣列物件
- JS 中特殊的物件-陣列JS物件陣列
- 【冰山白皮書】JS中的物件JS物件
- JS 中 物件 基礎認識JS物件
- JS中的Promise 物件記錄JSPromise物件
- json中物件陣列迭代JSON物件陣列
- JS Math.radom()隨機變換JS隨機
- JS 中的物件導向 prototype classJS物件
- JSP 中的 Request 和 Response 物件JS物件
- js中建立物件的幾種方式JS物件
- 在session中儲存JSON物件SessionJSON物件
- node將js中的json物件生成到新的excel表中JSON物件Excel
- 一個人就需要物件之js中八種建立物件方式物件JS
- python中math.log注意點Python
- [js物件]JS入門之arguments物件JS物件
- [js物件]JS入門之Array物件JS物件
- JS中陣列物件的基本結構JS陣列物件