最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript基本類型值-Number類型

 更新時間:2017年02月24日 10:26:22   作者:老板丶魚丸粗面  
本文主要介紹了JavaScript基本類型值-Number類型的相關(guān)知識,具有很好的參考價(jià)值,下面跟著小編一起來看下吧

大致介紹

在JavaScript的內(nèi)部采用IEEE754格式來表示數(shù)字,所以不區(qū)分整數(shù)和浮點(diǎn)數(shù),都是用64位浮點(diǎn)數(shù)的形式儲存。就是說,在JavaScript內(nèi)部,就根本沒有小數(shù)。但是有些運(yùn)算必須得需要整數(shù)完成,所以JavaScript有時會把64位的浮點(diǎn)數(shù)轉(zhuǎn)換成32位的整數(shù),再進(jìn)行運(yùn)算。

整數(shù)

JavaScript對整數(shù)提供四種表示方法:

1、二進(jìn)制:有前綴0b的數(shù)值,出現(xiàn)0,1以外的數(shù)字會報(bào)錯

2、八進(jìn)制:有前綴0o的數(shù)值,或者是以0后面再跟一個數(shù)字(0-7)。如果超出了前面所述的數(shù)值范圍,則會忽略第一個數(shù)字0,視為十進(jìn)制數(shù)

注意:八進(jìn)制字面量在嚴(yán)格模式下是無效的,會導(dǎo)致支持該模式的JavaScript引擎拋出錯誤

3、十六進(jìn)制:有前綴0x,后跟任何十六進(jìn)制數(shù)字(0~9及A~F),字母大小寫都可以,超出范圍會報(bào)錯

4、十進(jìn)制

var num2 = 0b11;
 console.log(num2); //3
 var num2 = 0b12;
 console.log(num2); //報(bào)錯
 var num8 = 0o76;
 console.log(num8); //02
 var num8 = 0o78;
 console.log(num8); //報(bào)錯
 var num16 = 0x2a;
 console.log(num16); //42
 var num16 = 0x2h;
 console.log(num16) //報(bào)錯

浮點(diǎn)數(shù)

所謂浮點(diǎn)數(shù),就是該數(shù)值中必須包含一個小數(shù)點(diǎn),并且小數(shù)點(diǎn)后面必須至少有一位數(shù)字。與整數(shù)不同,浮點(diǎn)數(shù)只能用十進(jìn)制來表示

浮點(diǎn)數(shù)的精度遠(yuǎn)遠(yuǎn)不如整數(shù),所以設(shè)計(jì)浮點(diǎn)數(shù)的運(yùn)算好比較要小心

例如:

 console.log(0.1 + 0.2 == 0.3); //false 0.30000000000000004
 console.log(0.6/0.2); //2.9999999999999996

科學(xué)計(jì)數(shù)法

對于那些極大極小的數(shù)值,可以用e表示法(即科學(xué)計(jì)數(shù)法)表示的浮點(diǎn)數(shù)值表示。用e表示法表示的數(shù)值等于e前面的數(shù)值乘以10的指數(shù)次冪

以下兩種情況,JavaScript會自動將數(shù)值轉(zhuǎn)為科學(xué)計(jì)數(shù)法表示,其他情況都采用字面形式直接表示。

1、小數(shù)點(diǎn)前的數(shù)字多余21位

 console.log(1234567890123456789012);// 1.2345678901234568e+21
 console.log(123456789012365648787); //123456789012365660000 

2、小數(shù)點(diǎn)后面的0多余5位

 console.log(0.0000006);//6e-7
 console.log(0.000006); //0.000006

數(shù)值范圍

由于內(nèi)存的限制,ECMAScript并不能保存世界上所有的數(shù)值,所以就有了最大值和最小值

最小值保存在Number.MIN_VALUE中,這個值是5e-324

最大值保存在Number.MAX_VALUE,這個值是1.7976931348623157e+308

 console.log(Number.MIN_VALUE) //5e-324
 console.log(Number.MAX_VALUE); //1.7976931348623157e+308

如果數(shù)字超過最大值,javascript會返回Infinity,這稱為正向溢出(overflow);如果等于或超過最小負(fù)值-1023(即非常接近0),javascript會直接把這個數(shù)轉(zhuǎn)為0,這稱為負(fù)向溢出(underflow)

如果要想確定一個數(shù)值是不是有窮的,可以使用isFinite()函數(shù)。這個函數(shù)在參數(shù)位于最小與最大數(shù)值之間時會返回true

 var result = Number.MAX_VALUE + Number.MAX_VALUE;
 console.log(isFinite(result)); //false

特殊數(shù)值

1、+0和-0

這兩個0在大對數(shù)的情況下都是等價(jià)的

 -0 === +0; //true
 0 === -0; //true
 0 === +0; //true

但是在作為分母的時候是不一樣的

1/-0 == 1/+0; //false

2、infinity

Infinity表示“無窮”,用來表示兩種場景。一種是一個正的數(shù)值太大,或一個負(fù)的數(shù)值太小,無法表示;另一種是非0數(shù)值除以0,得到Infinity。

 Math.pow(2,Math.pow(2,100));//Infinity
 1/0;//Infinity

Infinity參與的運(yùn)算結(jié)果只能是其本身、0或NaN

* Infinity;//Infinity
- Infinity;//-Infinity
+ Infinity;//Infinity
/ Infinity;//0
 Infinity / 2;//Infinity
 Infinity * Infinity;//Infinity
 Infinity - Infinity;//NaN
 Infinity + Infinity;//Infinity
 Infinity / Infinity;//NaN

3、NaN

這個數(shù)值表示一個本來要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況

NaN與任何值不相等,包括它本身,并且涉及NaN的任何操作都會返回NaN

 5 - 'x'; //NaN
 Math.acos(2); //NaN
 0 / 0; //NaN
 NaN == NaN;//false
 NaN == Infinity;//false 

NaN不是一種獨(dú)立的數(shù)據(jù)類型,而是一種特殊數(shù)值,它的數(shù)據(jù)類型依然屬于Number

 typeof NaN; //number

isNaN方法可以用來判斷一個值是否為NaN,但是,isNaN只對數(shù)值有效,如果傳入其他值,會被先轉(zhuǎn)成數(shù)值。比如,傳入字符串的時候,字符串會被先轉(zhuǎn)成NaN,所以最后返回true,這一點(diǎn)要特別引起注意。也就是說,isNaN為true的值,有可能不是NaN,而是一個字符串。

 isNaN('Hello') // true
 // 相當(dāng)于
 isNaN(Number('Hello')) // true 

判斷NaN更可靠的方法是,利用NaN是javascript之中唯一不等于自身的值這個特點(diǎn),進(jìn)行判斷

 function isNaN(value){
 return value != value;
 }

數(shù)制轉(zhuǎn)換

有3個函數(shù)可以把非數(shù)值轉(zhuǎn)換成數(shù)值:Number()、parseInt()和parseFloat()。其中Number()可以將任意類型的值轉(zhuǎn)化成數(shù)值,而parseInt()和parseFloat()只應(yīng)用于字符串向數(shù)字的轉(zhuǎn)換

Number()

轉(zhuǎn)換規(guī)則:

1、如果是Boolean值,true和false將分別轉(zhuǎn)換為1和0

2、如果是null值,返回0

3、如果是undefined,返回NaN

4、如果是字符串,遵循以下規(guī)則:

(1)若字符串只包含十進(jìn)制或十六進(jìn)制數(shù)字,則轉(zhuǎn)成十進(jìn)制的數(shù)字

注意:Number()不識別八進(jìn)制數(shù)字的字符串,會按照十進(jìn)制數(shù)字處理

字符串'1.2.'不會報(bào)錯,但數(shù)字1.2.會報(bào)錯

(2)若字符串為空字符串或空格字符串,則轉(zhuǎn)成0

(3)其他情況的字符串,則轉(zhuǎn)成NaN

Number(true) //1
 Number(null) //0
 Number(undefined) //NaN
 Number("0123") //123
 Number("0x123") //291
 Number("0.2") //0.2
 Number("") //0
 Number("asd") //NaN

parseInt()

parseInt()專門用于把字符串轉(zhuǎn)換成整數(shù)。在轉(zhuǎn)換字符串時,會忽略字符串前面的空格,直到找到第一個非空格字符。如果第一個字符不是數(shù)字字符或者負(fù)號,parseInt()就會返回NaN。如果是,則繼續(xù)解析,直到解析完成或者遇到非數(shù)字字符

 console.log(parseInt(' 123.8px'));//123
 console.log(parseInt(' 123.8 '));//123
 console.log(parseInt(' -123.8px'));//-123
 console.log(parseInt('a123.8px'));//NaN
 console.log(parseInt('0 123.8px'));//0

注意:在ECMAScript5中,parseInt()已經(jīng)不具備解析八進(jìn)制的能力。例如八進(jìn)制“070”,會忽略前面的“0”,得到十進(jìn)制的70

為了消除在使用parseInt()函數(shù)時可能導(dǎo)致的上述困惑,可以為這個函數(shù)提供第二個參數(shù):轉(zhuǎn)換時使用的基數(shù)(多少進(jìn)制)

 parseInt("070") //70
 parseInt("070",8) //56

parseFloat()

parseFloat()專門用于字符串轉(zhuǎn)換浮點(diǎn)數(shù)。同樣地,解析時會忽略字符串前面的空格,直到找到第一個非空格字符,然后一直解析到字符串末尾或一個無效的浮點(diǎn)數(shù)字字符為止

console.log(parseFloat(' 0123.px'));//123
 console.log(parseFloat(' 123.px'));//123
 console.log(parseFloat(' 123.1px'));//123.1
 console.log(parseFloat(' 123.1.2px '));//123.1
 console.log(parseFloat(' -123.0px'));//-123
 console.log(parseFloat('.123.1px'));//0.123
 console.log(parseFloat('0 123px'));//0

注意:parseFloat()只解析十進(jìn)制,所以十六進(jìn)制的字符串始終會被轉(zhuǎn)換成0。因此也沒有第二個參數(shù)用來指定基數(shù)

 parseFloat("0xA") //0

注意:Number('')的結(jié)果是0,parseInt('')和parseFloat('')的結(jié)果是NaN

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • 通過一次報(bào)錯詳細(xì)談?wù)凱oint事件

    通過一次報(bào)錯詳細(xì)談?wù)凱oint事件

    這篇文章主要給大家介紹了關(guān)于如何通過一次報(bào)錯詳細(xì)談?wù)凱oint事件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • JavaScript中的幾個關(guān)鍵概念的理解-原型鏈的構(gòu)建

    JavaScript中的幾個關(guān)鍵概念的理解-原型鏈的構(gòu)建

    JavaScript中的prototype,標(biāo)準(zhǔn)翻譯為“原型”,表示對象的初始形態(tài)
    2011-05-05
  • JavaScript中創(chuàng)建原子的方法總結(jié)

    JavaScript中創(chuàng)建原子的方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript中創(chuàng)建原子的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 淺談js中對象的使用

    淺談js中對象的使用

    下面小編就為大家?guī)硪黄獪\談js中對象的使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • layer.msg()去掉默認(rèn)時間,實(shí)現(xiàn)手動關(guān)閉的方法

    layer.msg()去掉默認(rèn)時間,實(shí)現(xiàn)手動關(guān)閉的方法

    今天小編就為大家分享一篇layer.msg()去掉默認(rèn)時間,實(shí)現(xiàn)手動關(guān)閉的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js操作二級聯(lián)動實(shí)現(xiàn)代碼

    js操作二級聯(lián)動實(shí)現(xiàn)代碼

    網(wǎng)上二級(多級)聯(lián)動的例子也不少,有各種不同的操作方法。我所采用的方法網(wǎng)上也應(yīng)該有的,不過我還沒有看到過。
    2010-07-07
  • JS關(guān)閉子窗口并且刷新上一個窗口的實(shí)現(xiàn)示例

    JS關(guān)閉子窗口并且刷新上一個窗口的實(shí)現(xiàn)示例

    這篇文章主要介紹了JS關(guān)閉子窗口并且刷新上一個窗口的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • WordPress中鼠標(biāo)懸停顯示和隱藏評論及引用按鈕的實(shí)現(xiàn)

    WordPress中鼠標(biāo)懸停顯示和隱藏評論及引用按鈕的實(shí)現(xiàn)

    這篇文章主要介紹了WordPress中鼠標(biāo)懸停顯示和隱藏評論及引用按鈕的實(shí)現(xiàn),順帶顯示和隱藏評論者信息的實(shí)現(xiàn)方法,非常實(shí)用,需要的朋友可以參考下
    2016-01-01
  • JavaScript實(shí)現(xiàn)表格快速變色效果代碼

    JavaScript實(shí)現(xiàn)表格快速變色效果代碼

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)表格快速變色效果的方法,通過javascript數(shù)組遍歷結(jié)合時間函數(shù)來實(shí)現(xiàn)表格快速變色的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • javascript中常用的字符串函數(shù)解讀

    javascript中常用的字符串函數(shù)解讀

    這篇文章主要介紹了javascript中常用的字符串函數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評論

浦县| 鹤岗市| 永州市| 福贡县| 弋阳县| 温州市| 密山市| 白玉县| 松原市| 开鲁县| 惠水县| 涟水县| 新源县| 廊坊市| 吉林市| 萨嘎县| 北流市| 历史| 土默特右旗| 枣强县| 依安县| 共和县| 灵台县| 如皋市| 临安市| 广灵县| 睢宁县| 昔阳县| 礼泉县| 南平市| 裕民县| 阜南县| 汉源县| 布尔津县| 疏附县| 栖霞市| 启东市| 招远市| 漳州市| 普定县| 浮山县|