num表示例項,number表示建構函式
let b = 2b.tostring(2) // 10
let a = 123456.789a.tofixed(2)
a.toexponential(2)
a.toprecision(2)
二進位制字首0b或0b,八進位制字首0o或者0o,十六進製制字首0x
0b111110111 === 503 // true0o767 === 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); // truenumber.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) // truenumber.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^53
到2^53
之間(不含兩個端點),超過這個範圍,無法精確表示這個值。
math.pow(2, 53) // 90071992547409929007199254740992 // 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)
將0b
和0o
字首的字串數值轉為十進位制
number('0b111') // 7number('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) // 4math.trunc('123.456') // 123
math.trunc(true) //1
math.trunc(false) // 0
math.trunc(null) // 0
對於空值和無法擷取整數的值,返回nan
。
math.trunc(nan); // nanmath.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); // 5math.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位及後面的會被丟棄。數值的極值分為兩種 可表示的極值和可精確計算的極值...