ES6 數值Number ES6擴充套件 Math

2022-09-08 17:15:12 字數 4794 閱讀 5781

num表示例項,number表示建構函式

let b = 2

b.tostring(2) // 10

let a = 123456.789

a.tofixed(2)

a.toexponential(2)

a.toprecision(2)

二進位制字首0b或0b,八進位制字首0o或者0o,十六進製制字首0x

0b111110111 === 503 // true

0o767 === 503 // true

其他進製轉十進位制

let b = '0xb'

number.parseint(b,16) //11

number.nan代表非數字值的特殊值。該屬性用於指示某個值不是數字。也可以直接用nan

number.isnan()是es6新增,檢查乙個值是否為nan。如果引數型別不是nan,number.isnan()一律返回false

isnan()是es5的,檢查乙個值是否為nan,會先把非數值轉換成數值,建議不使用

檢查乙個數值是否為有限的(finite),即不是infinity。如果引數型別不是數值,number.isfinite一律返回false

number.isfinite(15); // true

number.isfinite(0.8); // true

number.isfinite(nan); // false

number.isfinite(infinity); // false

number.isfinite(-infinity); // false

number.isfinite('foo'); // false

number.isfinite('15'); // false

number.isfinite(true); // false

isfinite()是es5的,檢查乙個值是否為nan,會先把非數值轉換成數值,建議不使用

number.isinteger()用來判斷乙個數值是否為整數。引數不是數值,返回false。

number.isinteger(25) // true

number.isinteger(25.0) // true

number.isinteger(25.1) // false

j**ascript 內部,整數和浮點數採用的是同樣的儲存方法,所以 25 和 25.0 被視為同乙個值。數值精度超過限度會誤判

極小的常量,表示 1 與大於 1 的最小浮點數之間的差,是 j**ascript 能夠表示的最小精度。誤差如果小於這個值,就可以認為已經沒有意義了,即不存在誤差了。實質是乙個可以接受的最小誤差範圍

number.epsilon === math.pow(2, -52)

j**ascript 能夠準確表示的整數範圍在-2^532^53之間(不含兩個端點),超過這個範圍,無法精確表示這個值。

math.pow(2, 53) // 9007199254740992

9007199254740992 // 9007199254740992

9007199254740993 // 9007199254740992

math.pow(2, 53) === math.pow(2, 53) + 1

// true

number.max_safe_integer,number.min_safe_integer來表示這個範圍的上下限。

number.max_safe_integer === math.pow(2, 53) - 1 === 9007199254740991
number.min_safe_integer === -number.max_safe_integer  === -9007199254740991

number.issageinteger()則是用來判斷乙個整數是否落在這個範圍之內。其實現如下

number.issafeinteger = function (n)

0b0o字首的字串數值轉為十進位制

number('0b111')  // 7

number('0o10') // 8

// es5的寫法

parseint('12.34') // 12

parsefloat('123.45#') // 123.45

// es6的寫法

number.parseint('12.34') // 12

number.parsefloat('123.45#') // 123.45

parseint()和parsefloat()都會有型別轉換的步驟,建議不適用

屬性描述

e返回算術常量 e,即自然對數的底數(約等於2.718)。

ln2返回 2 的自然對數(約等於0.693)。

ln10

返回 10 的自然對數(約等於2.302)。

log2e

返回以 2 為底的 e 的對數(約等於 1.414)。

log10e

返回以 10 為底的 e 的對數(約等於0.434)。

pi返回圓周率(約等於3.14159)。

sqrt1_2

返回返回 2 的平方根的倒數(約等於 0.707)。

sqrt2

返回 2 的平方根(約等於 1.414)。

方法描述

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方法將其先轉為數值。

math.trunc(4.1) // 4

math.trunc('123.456') // 123

math.trunc(true) //1

math.trunc(false) // 0

math.trunc(null) // 0

對於空值和無法擷取整數的值,返回nan

math.trunc(nan);      // nan

math.trunc('foo'); // nan

math.trunc(); // nan

math.trunc(undefined) // nan

對於沒有部署這個方法的環境,可以用下面的**模擬。

math.trunc = math.trunc || function(x) ;

用來判斷乙個數到底是正數、負數、還是零。對於非數值,會先將其轉換為數值。

對於沒有部署這個方法的環境,可以用下面的**模擬。

math.sign = math.sign || function(x) 

return x > 0 ? 1 : -1;

};

計算乙個數的立方根。方法內部也是先使用number方法將其轉為數值。

對於沒有部署這個方法的環境,可以用下面的**模擬。

math.cbrt = math.cbrt || function(x) ;

math.hypot()方法返回所有引數的平方和的平方根。

math.hypot(3, 4);        // 5

math.hypot(3, 4, 5); // 7.0710678118654755

math.hypot(); // 0

math.hypot(nan); // nan

math.hypot(3, 4, 'foo'); // nan

如果引數不是數值,math.hypot方法會將其轉為數值。只要有乙個引數無法轉為數值,就會返回 nan。 

其他數學相關的方法如對數方法、指數方法、雙曲線方法參考文件

ES6 數值擴充套件

1.二進位制表示法 以0b開頭console.log b 0b111110111 4942.八進位制表示法 以0o開頭console.log 0o767 5033.判斷乙個數是否有盡 或者判斷是否為字元console.log 15 number.isfinite 15 isfinite 判斷數值是否...

es6 數值的擴充套件

1 二進位制的表示 字首 0b 八進位制的表示 0o 2 number.isfinite number.isnan 3 number.parseint number.parsefloat 4 number.isinteger number.epsilon 5 number.issafeinteger...

ES6精華 數值擴充套件

es6為數值增加了些常量和方法,使計算更為簡便安全。本篇概括了這中的精華知識。js採用ieee 754標準的64位雙精度格式儲存數值。數值的精度最多可達到53個二進位制位 1個隱藏位和52個有效位 如果數值的精度超過此限度,第54位及後面的會被丟棄。數值的極值分為兩種 可表示的極值和可精確計算的極值...