JS 數(shù)字轉(zhuǎn)換研究總結(jié)
更新時間:2013年12月26日 18:04:33 作者:
這篇文章主要介紹了JS 數(shù)字轉(zhuǎn)換實現(xiàn)方法,需要的朋友可以參考下
JS 轉(zhuǎn)換數(shù)據(jù)為數(shù)字的方法有三類五種,包括:
•強制轉(zhuǎn)換,JS 的基本數(shù)據(jù)類型都這以這樣轉(zhuǎn)換成對應(yīng)的類型(Number(v))
•原生函數(shù),這兩個函數(shù)有不一樣的結(jié)果(parseInt(v,radix)、parseFloat(v))
•隱式轉(zhuǎn)換,在執(zhí)行的時候 JS 會轉(zhuǎn)換變量為對應(yīng)類型(位計算,數(shù)學(xué)計算)
轉(zhuǎn)換的原值也可以簡單分為三類:對象、特殊值、字符串。
JS 中的特殊值包括以下幾個。
•undefined,未定義,當(dāng)變量聲明但沒賦值或者一個對象不存在的屬性的值就是這個了。
•NaN/Infinity,這是兩個頑固的“數(shù)字”(typeof == number),分別表示非數(shù)字和無限大的數(shù)。貌似沒什么用,轉(zhuǎn)換成數(shù)字失敗的話,返回值基本是NaN。
•null,當(dāng)成零值用的對象(typeof == object)。
•true/false,布爾值,表示真、假,等價于1/0。
對于字符串,根據(jù)內(nèi)容還可以進行細分。根據(jù) JS 數(shù)字表達式,可以分為合法和非法。合法的數(shù)字有幾種不同的分類方法:
•符號:正號、負(fù)號、無符號
•進制:八進制、十進制、十六進制
•科學(xué)記數(shù)法
•小數(shù)、整數(shù),以及小數(shù)的簡寫
根據(jù)上面的分類,我制作了一個 Demo,用來測試不同方法、數(shù)值轉(zhuǎn)換后的結(jié)果。下面的截圖是在 chrome 下的轉(zhuǎn)換。

看結(jié)果只有位計算能把任何值轉(zhuǎn)換為有限數(shù)(isFinite),數(shù)學(xué)計算和強制轉(zhuǎn)換的結(jié)果是一樣的。
特殊值的轉(zhuǎn)換和原值以及轉(zhuǎn)換方法都有關(guān)系。parseInt/parseFloat 全部轉(zhuǎn)換失敗,返回 NaN。
•NaN/undefined 用其它方法全轉(zhuǎn)換成 NaN;
•Infinity 被 parseInt 轉(zhuǎn)換成 NaN,剩下的方法不改變它的值;
•null/false/true 不能被 parseInt/parseFloat 轉(zhuǎn)換,返回 NaN。
對字符串的轉(zhuǎn)換分析主要看轉(zhuǎn)換方法,但全部方法都不支持八進制表示的數(shù)字,而是當(dāng)成對應(yīng)的十進制數(shù)。
•邏輯計算轉(zhuǎn)換除負(fù)十六進制數(shù)外的合法表達式,并舍去小數(shù)部分;不合法的表達式返回零。
•數(shù)學(xué)計算/Number 和邏輯計算類似,但不舍去小數(shù);除空字符串外的不合法表達式返回 NaN。
•parseInt 也是只保留整數(shù)部分;但是對不合法的表達式,取字符串前面合法的整數(shù)(十進制、十六進制,不包括科學(xué)記數(shù)法)部分轉(zhuǎn)換,沒有則返回 NaN。
•parseFloat 和 parseInt 類似,不同的是能識別并保留小數(shù)部分,并且不支持十六進制數(shù)。
•強制轉(zhuǎn)換,JS 的基本數(shù)據(jù)類型都這以這樣轉(zhuǎn)換成對應(yīng)的類型(Number(v))
•原生函數(shù),這兩個函數(shù)有不一樣的結(jié)果(parseInt(v,radix)、parseFloat(v))
•隱式轉(zhuǎn)換,在執(zhí)行的時候 JS 會轉(zhuǎn)換變量為對應(yīng)類型(位計算,數(shù)學(xué)計算)
轉(zhuǎn)換的原值也可以簡單分為三類:對象、特殊值、字符串。
JS 中的特殊值包括以下幾個。
•undefined,未定義,當(dāng)變量聲明但沒賦值或者一個對象不存在的屬性的值就是這個了。
•NaN/Infinity,這是兩個頑固的“數(shù)字”(typeof == number),分別表示非數(shù)字和無限大的數(shù)。貌似沒什么用,轉(zhuǎn)換成數(shù)字失敗的話,返回值基本是NaN。
•null,當(dāng)成零值用的對象(typeof == object)。
•true/false,布爾值,表示真、假,等價于1/0。
對于字符串,根據(jù)內(nèi)容還可以進行細分。根據(jù) JS 數(shù)字表達式,可以分為合法和非法。合法的數(shù)字有幾種不同的分類方法:
•符號:正號、負(fù)號、無符號
•進制:八進制、十進制、十六進制
•科學(xué)記數(shù)法
•小數(shù)、整數(shù),以及小數(shù)的簡寫
根據(jù)上面的分類,我制作了一個 Demo,用來測試不同方法、數(shù)值轉(zhuǎn)換后的結(jié)果。下面的截圖是在 chrome 下的轉(zhuǎn)換。

看結(jié)果只有位計算能把任何值轉(zhuǎn)換為有限數(shù)(isFinite),數(shù)學(xué)計算和強制轉(zhuǎn)換的結(jié)果是一樣的。
特殊值的轉(zhuǎn)換和原值以及轉(zhuǎn)換方法都有關(guān)系。parseInt/parseFloat 全部轉(zhuǎn)換失敗,返回 NaN。
•NaN/undefined 用其它方法全轉(zhuǎn)換成 NaN;
•Infinity 被 parseInt 轉(zhuǎn)換成 NaN,剩下的方法不改變它的值;
•null/false/true 不能被 parseInt/parseFloat 轉(zhuǎn)換,返回 NaN。
對字符串的轉(zhuǎn)換分析主要看轉(zhuǎn)換方法,但全部方法都不支持八進制表示的數(shù)字,而是當(dāng)成對應(yīng)的十進制數(shù)。
•邏輯計算轉(zhuǎn)換除負(fù)十六進制數(shù)外的合法表達式,并舍去小數(shù)部分;不合法的表達式返回零。
•數(shù)學(xué)計算/Number 和邏輯計算類似,但不舍去小數(shù);除空字符串外的不合法表達式返回 NaN。
•parseInt 也是只保留整數(shù)部分;但是對不合法的表達式,取字符串前面合法的整數(shù)(十進制、十六進制,不包括科學(xué)記數(shù)法)部分轉(zhuǎn)換,沒有則返回 NaN。
•parseFloat 和 parseInt 類似,不同的是能識別并保留小數(shù)部分,并且不支持十六進制數(shù)。
相關(guān)文章
H5基于iScroll實現(xiàn)下拉刷新和上拉加載更多
這篇文章主要為大家詳細介紹了H5基于iScroll實現(xiàn)下拉刷新和上拉加載更多效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07JavaScript & jQuery完美判斷圖片是否加載完畢
本文主要介紹了JavaScript & jQuery完美判斷圖片是否加載完畢的方法。具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01JavaScript獲取和設(shè)置CheckBox狀態(tài)的簡單方法
這篇文章介紹了JavaScript獲取和設(shè)置CheckBox狀態(tài)的簡單方法,有需要的朋友可以參考一下2013-07-07僅一個form表單 js實現(xiàn)注冊信息依次填寫提交功能
這篇文章主要為大家詳細介紹了僅一個form表單,JavaScript可實現(xiàn)注冊信息依次填寫提交功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06ECharts餅圖顏色設(shè)置的4種方式總結(jié)
這篇文章主要給大家介紹了關(guān)于ECharts餅圖顏色設(shè)置的4種方式,ECharts餅圖的顏色可以通過多種方式進行設(shè)置,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2023-09-09