ES6第七章數值的擴充套件

2021-10-08 18:55:28 字數 2541 閱讀 7493

數值的擴充套件

二進位制字首0b(或0b)八進位制和0o(或0o)表示。

0b111110111 === 503 // true

0o767 === 503 // true

如果要將0b和0o字首的字串數值轉為十進位制,要使用number方法。
number('0b111')  // 7

number('0o10') // 8

math 物件的擴充套件

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

math.cbrt()用於計算乙個數的立方根。

math.cbrt(-1) // -1

math.cbrt(0) // 0

math.cbrt(1) // 1

math.cbrt(2) // 1.2599210498948732

對於非數值,math.cbrt()方法內部也是先使用number()方法將其轉為數值。

math.clz32() 方法將引數轉為 32 位無符號整數的形式,然後返回這個 32 位值裡面有多少個前導 0

math.clz32(0) // 32

math.clz32(1) // 31

math.clz32(1000) // 22

也就在左移和右移有用到就可以看到最多可以移位多少。

math.imul() 返回兩個數以 32 位帶符號整數形式相乘的結果,返回的也是乙個 32 位的帶符號整數。

math.imul(2, 4)   // 8

math.imul(-1, 8) // -8

看起來math.imul(2, 4) 和直接2*4結果是一樣的但是,實際上不一樣因為前面說過的精度問題,math.imul(2, 4)實際上等於(a * b)|0。所以對於那些很大的數的乘法,低位數值往往都是不精確的,math.imul方法可以返回正確的低位數值。

math.fround() 返回乙個數的32位單精度浮點數形式。

math.fround方法的主要作用,是將64位雙精度浮點數轉為32位單精度浮點數。(32位精度,1位符號,八位階碼,所以精度是23位,但是有一位是固定的所以是24位精度)如果小數的精度超過24個二進位制位,返回值就會不同於原值,否則返回值不變(即與64位雙精度值一致)。

// 未丟失有效精度

math.fround(1.125) // 1.125

math.fround(7.25) // 7.25

// 丟失精度

math.fround(0.3) // 0.30000001192092896

math.fround(0.7) // 0.699999988079071

math.fround(1.0000000123) // 1

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(3, 4, '5'); // 7.0710678118654755

math.hypot(-3); // 3

對數方法

const max = 2n ** (64n - 1n) - 1n;

bigint.asintn(64, max) // 9223372036854775807n

bigint.asintn(64, max + 1n) // -9223372036854775808n

bigint.asuintn(64, max + 1n) // 9223372036854775808n

boolean(0n) // false

boolean(1n) // true

number(1n) // 1

string(1n) // "1"

取反運算子(!)也可以將 bigint 轉為布林值!0n !1n數**算

其他運算

0n < 1 // true

0n < true // true

0n == 0 // true

0n == false // true

0n === 0 // false

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數值的擴充套件

1 二進位制和八進位制的表示方法 es6提供了二進位制和八進位制的表示方法,分別用字首ob 二進位制 和0o 八進位制 表示 將二進位制或者八進位制轉換為十進位制可以呼叫number方法 2 number.isnan 和number.isfinite 前者用來判斷乙個數字是否為nan,後者用來判斷乙...