成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

深入了解 Number 類型

scwang90 / 1801人閱讀

摘要:下面就讓我們來(lái)一起深入了解下,為以后的策馬奔騰做好鋪墊。整數(shù)整數(shù),可以通過(guò)十進(jìn)制,八進(jìn)制,十六進(jìn)制的字面值來(lái)表示。對(duì)前面定義的八進(jìn)制和十六進(jìn)制數(shù)值進(jìn)行運(yùn)算浮點(diǎn)數(shù)浮點(diǎn)數(shù)其實(shí)就是我們通常所說(shuō)的小數(shù),所以一定有個(gè)小數(shù)點(diǎn)。

Number 類型作為 JS 的基本數(shù)據(jù)類型之一,被應(yīng)用在程序中的各種場(chǎng)景,其重要性就如數(shù)字對(duì)于我們?nèi)粘I睢?br>下面就讓我們來(lái)一起深入了解下,為以后的“策馬奔騰”做好鋪墊。

定義方式

一般來(lái)說(shuō)我們可以直接使用數(shù)值字面量格式來(lái)定義一個(gè)數(shù)字,如下:

var num1 = 15;
var num2 = 7;

console.log(typeof num1); // number
console.log(typeof num2); // number
數(shù)值類型

定義的數(shù)值可分為兩種類型,分別為整數(shù)和浮點(diǎn)數(shù)。

整數(shù)

整數(shù),可以通過(guò)十進(jìn)制,八進(jìn)制,十六進(jìn)制的字面值來(lái)表示。(默認(rèn)為十進(jìn)值)

// 十進(jìn)制
var intNum1 = 55; // 正數(shù)
var intNum2 = 0; // 0
var intNum3 = -3; // 負(fù)數(shù)

// 八進(jìn)制
// 第一位必須是0,其余位的取值范圍為0-7
// 無(wú)效的八進(jìn)制會(huì)直接忽略前面的0,解析為十進(jìn)制
var octalNum1 = 070; // 八進(jìn)制的56(7*8 + 0)
var octalNum2 = 079; // 無(wú)效的八進(jìn)制數(shù),9超過(guò)了8進(jìn)制數(shù)的范圍,解析為79
var octalNum3 = 08; // 無(wú)效的八進(jìn)制數(shù),直接解析偽8

// 十六進(jìn)制
// 前兩位必須是0x,其余位的取值范圍為 0~9 或 A~F
var hexNum1 = 0xA; // 十六進(jìn)制的10
var hexNum2 = 0x1f; // 十六進(jìn)制的31(1*16 + 15)
在進(jìn)行算數(shù)計(jì)算時(shí),所有以八進(jìn)制和十六進(jìn)制表示的數(shù)值最終都將被轉(zhuǎn)換成十進(jìn)制的數(shù)值。
// 對(duì)前面定義的八進(jìn)制和十六進(jìn)制數(shù)值進(jìn)行運(yùn)算
console.log(octalNum1 + hexNum1); // 66
浮點(diǎn)數(shù)

浮點(diǎn)數(shù)其實(shí)就是我們通常所說(shuō)的小數(shù),所以一定有個(gè)小數(shù)點(diǎn)。簡(jiǎn)單示例如下:

var floatNum1 = 5.2;
var floatNum2 = 3.14;

浮點(diǎn)數(shù)所占據(jù)的內(nèi)存空間是整數(shù)的兩倍。如果小數(shù)點(diǎn)后只有零或沒(méi)有數(shù)字,為了節(jié)省內(nèi)存空間,則該小數(shù)會(huì)被轉(zhuǎn)化為整數(shù),如下:

var floatNum3 = 5.0; // 5
var floatNum4 = 2.; // 2

進(jìn)行算術(shù)運(yùn)算時(shí),浮點(diǎn)數(shù)不如整數(shù)精準(zhǔn),所以一般不要使用浮點(diǎn)數(shù)進(jìn)行計(jì)算,如下:

var floatNum4 = 0.1; 
var floatNum5 = 0.2; 

// 0.1 + 0.2 不等于 0.3
console.log(floatNum4 + floatNum5); // 0.30000000000000004

對(duì)極大極小的浮點(diǎn)數(shù)一般會(huì)采用e表示法,如下:

 var floatNum6 = 3.2e7;// 3.2×10(7次冪)
 var floatNum7 = 3.2e-7;// 3.2×10(-7次冪)
NaN

NaN 是 not a number 的簡(jiǎn)寫,即非數(shù)字。它是一個(gè)特殊的值,這個(gè)數(shù)值用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù),結(jié)果未返回?cái)?shù)值的情況。
NaN 有兩個(gè)不同尋常的特點(diǎn):

任何涉及 NaN 的操作都會(huì)返回 NaN

NaN 值與任何值都不相等,包括本身。

console.log(NaN / 10); // NaN
console.log(NaN == NaN); // false
針對(duì)這兩個(gè)特點(diǎn),JS 提供了一個(gè) isNaN()函數(shù)。該函數(shù)接受一個(gè)參數(shù)(可以是任何類型),而函數(shù)會(huì)幫我們確定這個(gè)參數(shù)是否“不是數(shù)值”。
注:傳遞的參數(shù)會(huì)涉及數(shù)值轉(zhuǎn)換的問(wèn)題,例如“10”這個(gè)字符串就可以轉(zhuǎn)換為 10,但是“blue”這個(gè)字符串則無(wú)法轉(zhuǎn)換為數(shù)字,所以 isNaN("blue") == true

console.log(isNaN(NaN)); // true
console.log(isNaN(10)); // false
console.log(isNaN("10")); // false,可以被轉(zhuǎn)成數(shù)值 10
console.log(isNaN("blue")); // true
console.log(isNaN(true)); // false,可以被轉(zhuǎn)成數(shù)值 1
數(shù)值轉(zhuǎn)換

有三個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number(),parseInt(),parseFloat()。第一個(gè)可以用于任何數(shù)據(jù)類型,后兩個(gè)則專門用于把字符串轉(zhuǎn)化為數(shù)值。
簡(jiǎn)單示例如下:

// Number()
// 轉(zhuǎn)換規(guī)則比較復(fù)雜,可詳細(xì)參考下面的資料
var numN1 = Number("Hello world!");  // NaN
var numN2 = Number(" ");  // 0 空字符串轉(zhuǎn)為0
var numN3 = Numberl("000011");  // 11
var numN4 = Number(true);  // 1

// parseInt
// 忽略小數(shù)點(diǎn)
// 字符串會(huì)被轉(zhuǎn)成數(shù)值
var numI1 = parseInt(22.5);   // 22
var numI2 = parseInt ("1234blue") ;  // 1234
var numI3 = parseInt (" ") ;   // NaN
var numI4 = parseInt("70");  //70(十進(jìn)制數(shù))
var numI5 = parseInt ("070") ;  // 56(八進(jìn)制數(shù))
var numI6 = parseInt ("0xA") ;  // 10(十六進(jìn)制數(shù))

// parseFloat
// 字符串會(huì)被轉(zhuǎn)成數(shù)值
// 如果有多個(gè)小數(shù)點(diǎn),則只去第一個(gè),其余全部舍棄
var numF1 = parseFloat ("1234blue") ;  // 1234(整數(shù))
var numF2 = parseFloat("0xA");   // 0
var numF3 = parseFloat("22.5");  // 22.5
var numF4 = parseFloat("22.34.5");  // 22.34
var numF5 = parseFloat("0908.5");   // 908.5
var numF6 = parseFloat("3.125e7");   // 31250000

詳細(xì)介紹可參考:

JavaScript數(shù)值轉(zhuǎn)換(非數(shù)值轉(zhuǎn)換為數(shù)值)

parseInt

parseFloat

數(shù)值范圍

由于內(nèi)存的限制,JS 并不能保存所有的數(shù)值。那么其能表示的最大最小值到底是多少呢?我們可以使用 Number 對(duì)象的 MIN_VALUE 和 MAX_VALUE 屬性表示(很少很少用到,大概知道就可以,真要用的時(shí)候可以再查閱):

Number.MIN_VALUE 為能表示的最小正數(shù)即最接近 0 的正數(shù) (實(shí)際上不會(huì)變成 0),它的近似值為 5 x 10-324。

Number.MAX_VALUE 為能表示的最大正數(shù),它的近似值為 1.7976931348623157 x 10308

如果一個(gè)數(shù)值超過(guò)了最大能表示數(shù)值,則自動(dòng)變成 Infinity 值(無(wú)窮數(shù)),我們可以使用 Number 對(duì)象的 isFinite() 來(lái)判斷一個(gè)數(shù)是否是有限數(shù),如果非有限數(shù)則為無(wú)窮數(shù)。

console.log(Number.isFinite(56)); // true
console.log(Number.isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); // false

更多 Number 對(duì)象的屬性和方法可參考:Number 對(duì)象 | MDN

數(shù)學(xué)函數(shù)

回憶想想,我們上學(xué)的時(shí)候是不是學(xué)過(guò)很多處理數(shù)字的數(shù)學(xué)公式啊,那在 JS 中該怎么辦?
不用慌,JS 中內(nèi)置了一個(gè) Math 對(duì)象,它具有數(shù)學(xué)常數(shù)和函數(shù)的屬性和方法。
我們先來(lái)幾個(gè)簡(jiǎn)單的例子:

// 函數(shù)返回一個(gè)數(shù)字四舍五入后最接近的整數(shù)值。
Math.round(3.4); // 3

// 函數(shù)返回一個(gè)隨機(jī)浮點(diǎn)數(shù), 范圍在[0,1)
Math.random(); // 隨機(jī)浮點(diǎn)數(shù),每次都不一樣

// 函數(shù)返回一個(gè)數(shù)的平方根
Math.sqrt(9); // 3

// 函數(shù)返回給定的一組數(shù)字中的最大值
Math.max(10, 20, 13, 18);   //  20

//sin 方法返回一個(gè) -1 到 1 之間的數(shù)值,表示給定角度(單位:弧度)的正弦值。
// Math.PI 表示圓周率,一個(gè)圓的周長(zhǎng)和直徑之比,約等于 3.14159.
Math.sin(Math.PI / 2); // 1

更多 Math 對(duì)象可參考:Math 對(duì)象 | MDN

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107024.html

相關(guān)文章

  • 深入js隱式類型轉(zhuǎn)換

    摘要:結(jié)合實(shí)際中的情況來(lái)看,有意或無(wú)意中涉及到隱式類型轉(zhuǎn)換的情況還是很多的。此外當(dāng)進(jìn)行某些操作時(shí),變量可以進(jìn)行類型轉(zhuǎn)換,我們主動(dòng)進(jìn)行的就是顯式類型轉(zhuǎn)換,另一種就是隱式類型轉(zhuǎn)換了。 前言 相信剛開(kāi)始了解js的時(shí)候,都會(huì)遇到 2 ==2,但 1+2 == 1+2為false的情況。這時(shí)候應(yīng)該會(huì)是一臉懵逼的狀態(tài),不得不感慨js弱類型的靈活讓人發(fā)指,隱式類型轉(zhuǎn)換就是這么猝不及防。結(jié)合實(shí)際中的情況來(lái)看...

    tomato 評(píng)論0 收藏0
  • JavaScript 深入了解基本類型和引用類型的值

    摘要:原文鏈接一個(gè)變量可以存放兩種類型的值,基本類型的值和引用類型的值。引入了一種新的原始數(shù)據(jù)類型,表示獨(dú)一無(wú)二的值。 原文鏈接 一個(gè)變量可以存放兩種類型的值,基本類型的值(primitive values)和引用類型的值(reference values)。 ES6 引入了一種新的原始數(shù)據(jù)類型 Symbol,表示獨(dú)一無(wú)二的值。它是 JavaScript 語(yǔ)言的第七種數(shù)據(jù)類型,前六種是:Un...

    Mr_houzi 評(píng)論0 收藏0
  • 深入理解Javascript原型關(guān)系

    摘要:如下所示在規(guī)范中,已經(jīng)正式把屬性添加到規(guī)范中也可以通過(guò)設(shè)置和獲取對(duì)象的原型對(duì)象對(duì)象之間的關(guān)系可以用下圖來(lái)表示但規(guī)范主要介紹了如何利用構(gòu)造函數(shù)去構(gòu)建原型關(guān)系。 前言 在軟件工程中,代碼重用的模式極為重要,因?yàn)樗麄兛梢燥@著地減少軟件開(kāi)發(fā)的成本。在那些主流的基于類的語(yǔ)言(比如Java,C++)中都是通過(guò)繼承(extend)來(lái)實(shí)現(xiàn)代碼復(fù)用,同時(shí)類繼承引入了一套類型規(guī)范。而JavaScript是...

    ethernet 評(píng)論0 收藏0
  • 深入了解JavaScript對(duì)象(1)--原始類型和引用類型

    摘要:原始類型和引用類型原始類型存儲(chǔ)簡(jiǎn)單數(shù)據(jù)值,引用類型存儲(chǔ)對(duì)象,其本質(zhì)是指向內(nèi)存位置的應(yīng)用。保存指向內(nèi)存中實(shí)際對(duì)象所在位置的指針鑒別引用類型操作符以一個(gè)對(duì)象和一個(gè)構(gòu)造函數(shù)為參數(shù)。這些特殊引用類型的存在使得原始引用類型用起來(lái)和對(duì)象一樣方便。 原始類型和引用類型 1.原始類型存儲(chǔ)簡(jiǎn)單數(shù)據(jù)值,引用類型存儲(chǔ)對(duì)象,其本質(zhì)是指向內(nèi)存位置的應(yīng)用。 注:其他編程語(yǔ)言用棧存儲(chǔ)原始類型,用堆存儲(chǔ)引用類型。Ja...

    mindwind 評(píng)論0 收藏0
  • 有關(guān)javascript強(qiáng)制轉(zhuǎn)換不得不說(shuō)的故事

    摘要:我們首先了解一下中有關(guān)類型轉(zhuǎn)換的知識(shí)。新增類型拋出異常從列表可以明顯看到少了一個(gè)類型轉(zhuǎn)換為的規(guī)則。這里要強(qiáng)調(diào)一點(diǎn)第二個(gè)表達(dá)式?jīng)]有涉及到強(qiáng)制類型轉(zhuǎn)換。如果文中有錯(cuò)誤或者有某些強(qiáng)制轉(zhuǎn)換的情形沒(méi)有涉及到請(qǐng)及時(shí)留言告知,我會(huì)修改并補(bǔ)充進(jìn)去。 javascript是一門非常奇特的語(yǔ)言,它有時(shí)候奇特的會(huì)讓人懷疑人生。比如讓我們看一下下面的一些奇葩例子: false == 0 ...

    xcold 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

scwang90

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<