1. 程式人生 > >ES6之數值型別(number)

ES6之數值型別(number)

新特性:Number.isNaN函式

傳統的isNaN函式會把非數值的引數轉化成數值再進行判斷,而Number.
isNaN只對數值型別有效,非數值型別的引數一律返回false。當返回false的時候,不一定就是一個數值,有可能是一個非數值型別的引數。

    isNaN('abc');//結果:true
    //'abc'無法轉為一個數值,返回true

    Number.isNaN('abc'); //結果:false
    //'abc'是字串,Number.isNaN不做型別轉換,直接返回false

新特性:Number.isFinite函式

Number.isFinite函式:用來檢查一個數值是否非無窮。注意第二行程式碼的引數:Infinity,Infinity是window物件下的一個常量,表示一個無窮數。所以第二行程式碼會返回false。此外,isFinite函式跟isNaN函式一樣,也只是對數值型別有效,對非數值型別的引數一律返回false。

    Number.isFinite(1);
    //結果:true,數值1是有窮,即非無窮

    Number.isFinite(Infinity);
    //結果:false,Infinity表示無窮大的特殊值

    Number.isFinite('abc'); //結果:false

新特性:Number.parseInt函式

parseInt函式:解析一個字串,返回一個整數。parseInt函式同樣是從window物件下移植到Number物件下,但是它的作用沒有任何變化。

    //傳統用法:
    parseInt('12.3abc');  
    //結果:返回數值12
//ES6用法: Number.parseInt('12.3abc'); //結果:返回數值12

新特性:Number.parseFloat函式

parseFloat函式:解析一個字串,並返回一個浮點數。跟parseInt一樣,被移植到Number物件下,作用保持不變。

    //傳統用法:
    parseInt('12.3abc');
    //結果:返回數值12

    //ES6用法:
    Number.parseInt('12.3abc');
    //結果:返回數值12

以上4個函式都是在window物件下,移植到了Number物件下,這麼做的目的是慢慢地減少全域性性的函式,把全域性函式合理地規劃到其他物件下,漸漸實現語言的模組化。

新特性:Number.isInteger函式

Number.isInteger函式:用來判斷是否是整數。
在javascript內部對整數和浮點數採用一樣的儲存方式,因此小數點後如果都是0的浮點數,都會被認為是整數。
數值3.0和3.00都會被認為是整數。

    Number.isInteger(3.2);
    //結果:false

    Number.isInteger(3);
    //結果:true

    Number.isInteger(3.0);
    //結果:true

    Number.isInteger(3.00);
    //結果:true

極小常量

Number.EPSILON常量:定義一個極小的數值。
2.220446049250313e-16是一個極小的數值,約等於0.00000000000000022204。幹嘛要定義一個這樣的數值,在什麼情況下會用它呢?Number.EPSILON的出現是用來判斷浮點數的計算誤差,如果浮點數計算得到的誤差不超過Number.EPSILON的值,就表示可以接受這樣的誤差。

    console.log(Number.EPSILON);
    //結果:2.220446049250313e-16

安全整數

ES6為我們引入了安全整數的概念。JavaScript能夠準確表示的整數範圍在-2^53到2^53之間,超過這個範圍,無法精確表示這個值。故稱之為不安全。
為此,ES6定義了兩個常量來表示這個範圍的最大值和最小值:Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER。此外,如果給你一個數值,你不知道它是否超出了這個安全範圍,你可以使用ES6給我們新增的一個函式Number.isSafeInteger來進行判斷。看例子:

    Number.isSafeInteger(Number.MAX_SAFE_INTEGER);
    //結果:true

    Number.isSafeInteger(Number.MAX_SAFE_INTEGER+1);
    //結果:false

我們用最大安全整數Number.MAX_SAFE_INTEGER來做試驗,第一行程式碼的結果返回的值是true,也就表示Number.MAX_SAFE_INTEGER屬於安全範圍,第二行程式碼,我們對Number.MAX_SAFE_INTEGER進行了+1,相加後的數值超過安全範圍,isSafeInteger函式就返回了false,表示不在安全範圍內。

新特性:Math.trunc函式

Math.trunc函式:用於去除一個數的小數部分,返回整數部分。

    Math.trunc(3);
    //結果:3

    Math.trunc(3.1);
    //結果:3

新特性:Math.sign函式

Math.sign函式:用來判斷一個數到底是正數、負數、還是零。

    Math.sign(3);
    //結果:1

    Math.sign(-3);
    //結果:-1

    Math.sign(0);
    //結果:0

    Math.sign('abc');
    //結果:NaN

新特性:Math.cbrt函式

Math.cbrt函式:用於計算一個數的立方根。

    Math.cbrt(8);
    //結果:2

    Math.cbrt(27);
    //結果:3

除了這三個函式以外,剩下的新增函式都是一些高中時期的數學方法,只不過是ES6將他們的運算封裝成一個方法,方便大家使用,也算是開發者的福音。
它們分別是:
Math.acosh(x) 返回 x 的反雙曲餘弦。
Math.asinh(x) 返回 x 的反雙曲正弦。
Math.clz32(x) 返回 x 的 32 位二進位制整數表示形式的前導 0的個數。
Math.sinh(x) 返回x的雙曲正弦。
Math.cosh(x) 返回 x 的雙曲餘弦。
Math.expm1(x) 返回 eˆx - 1。
Math.fround(x) 返回 x 的單精度浮點數形式。
Math.hypot(…values)返回所有引數的平方和的平方根。
Math.imul(x, y) 返回兩個引數以 32 位整數形式相乘的結果。
Math.log1p(x)返回 1 + x 的自然對數。
Math.log10(x) 返回以 10 為底的x的對數。
Math.log2(x) 返回以 2 為底的 x 的對數。
Math.tanh(x) 返回 x 的雙曲正切。

這麼多數學方法,估計很多人都會懵逼,根本記不住這麼多,但是沒關係,我們也不需要去死記硬背它們,我們只需要記住ES6為Math物件擴充套件了很多數學方法就可以了。等真正使用到的時候,我們再去查詢資料就可以了。

相關推薦

ES6數值型別(number)

新特性:Number.isNaN函式 傳統的isNaN函式會把非數值的引數轉化成數值再進行判斷,而Number. isNaN只對數值型別有效,非數值型別的引數一律返回false。當返回false的時候,不一定就是一個數值,有可能是一個非數值型別的引

4.1Python資料型別(1)數值型別

返回總目錄 目錄: 1.資料型別的表現形式: 2.資料進位制的轉換: 3.資料的常規操作: (一).資料型別的表現形式: (1)整數型別: # 二進位制: a = 0b0110 print("二進位制:", a) # 十進位制: b = 134 print("十進位制:", b

python資料型別數值型別

1.變數     變數是記憶體中的一塊區域,變數名用字母,數字,下劃線組成。python地址變數與C語言剛好相反,一個數據包含多個標籤。 2.算術運算子     +(加),-(減),*(乘),/(除),%(取餘),//(取整) 3.賦值運算子     =(賦值),+=

ES6 數值的擴充套件

二進位制和八進位制的表示法 二進位制和八進位制的新寫法:字首0b(或0B)和0o(或 0O)標示 ES5嚴格模式下,八進位制不允許使用字首0表示 ES6進一步明確使用字首0o表示

ES6數值的擴展

多少 asc 誤差 let parseint 邊界值 fin bsp script 1、二進制和八進制表示法   分別前綴----二進制:0b(0B) 八進制:0o(0O) 註:要把0b和0o前綴的字符串轉為十進制數值,要用Number方法

ES6學習數值擴展

sin isf integer 後綴 isnan 範圍 int 數值 平方根 二進制和八進制表示法(二進制用前綴0b(或0B)表示,八進制用前綴0o(或0O)表示) Number(‘0b111‘) // 7 Number(‘0o10‘) // 8 Number.is

學習筆記Python資料型別-Number

Number Python 2 中的數字,支援int, float, bool, complex, long這些資料型別,其中long(即長整型)很少用。 int >>> v1 = 10 >>> type(v1) #type()方法可

資料型別數值型別】的整數型 tinyint

1.1 smallint說明 1.2 smallint實踐      1.2.1 環境準備      1.2.2 加UNSIGNED引數      1.2.3 加ZEROFILL

資料型別數值型別】的整數型 mediumint

1.1 mediumint說明 1.2 mediumint實踐    1.2.1 環境準備    1.2.2 加UNSIGNED引數    1.2.3 加ZEROFILL引數    1.2.4 不加UNSIGNED和

資料型別數值型別】的整數型 int

目錄 1.1 int說明 1.2 int實踐 1.2.1 環境準備 1.2.2 加UNSIGNED引數 1.2.3 加ZEROFILL引數 1.2.4 不加UNSIGNED和ZEROFILL引數 1.3 int總結 1.1 int說明 型別 長度

《機器學習實戰》學習筆記(七)預測數值型別資料:迴歸

轉載請註明作者和出處:http://blog.csdn.net/john_bh/ 執行平臺: Windows Python版本: Python3.6 IDE: Sublime text3 一、降維技術 1.1 什麼是降維 降維就是

Python資料型別數值-Python基礎前傳(5)

學習任何一門學科或者手藝,最忌諱的就是想的太多,做的太少; 有很多朋友私信問我:jacky,我們該如何選擇Python的課程?或是我們該如何選擇Mysql課程?到底誰的課件和書籍才是最好的?

Linux下Shell程式設計算術運算和邏輯比較(數值型別、字串型別、檔案型別)

shell程式設計中的算術運算和邏輯比較,主要根據不同運算物件,採用相應的比較、運算方式。 一、數值型 算術運算 ,以變數自增1為例,+ - * / % 等運算方式同理,運算的方式大體四種: i=`expr $i + 1` let i+=1 , let的操作成員不需要

學習es6(變量的解構賦值)

返回 blog 成了 所在 asc 對象 expected 正弦 peer 數組的解構賦值 ES6允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構。 以前,為變量賦值,只能直接指定值。 let a = 1; let b = 2; let c = 3;

es6Generator

object 每一個 undefined style es6 cti 另一個 world done 1.Generator函數其實是一個封裝了多個內部狀態的狀態機,執行它會返回一個遍歷器對象,然後可以依次遍歷Generator中的每一個狀態,也就是分段執行,yield是暫停

ES6 let const

完全 變量 凍結 obj 結構 數據結構 代碼 但是 全局 1 let 聲明的變量只能自己讀取不能和var聲明的混淆 2 只要有let聲明的代碼塊裏,在聲明的變量前調用就會報錯 3 同一個變量不能聲明2次 const : 1 作用域類似let 2 聲明的常量不可改

ES6class

tor 逗號 之間 ima 註意 type 屬性 clas method ES5中通常通過構造函數和原型的組合形式來創建對象。在ES6中引入class作為對象模板, Class定義語法 class point{ constructor(x,y){

ES66種遍歷對象屬性的方法

對象 一個 object 個數 遍歷 for get obj clas 1.for ... in 循環遍歷對象自身的和繼承的可枚舉屬性(不含Symbol屬性). 2.Obejct.keys(obj),返回一個數組,包括對象自身的(不含繼承的)所有可枚舉屬性(不含S

ES6主要知識點(三)字符串

lis 如果 rip int() 變量 world time des 參數 引自:http://es6.ruanyifeng.com/#docs/string#codePointAt codePointAt() String.fromCodePoint() at() in

ES6主要知識點(五)函數

call() line [] 簡寫 過大 get color 復雜 obj 函數參數的默認值 作用域 var x = 1; function f(x, y = x) { console.log(y); } f(2) // 2 let x = 1; funct