摘要:下面就讓我們來一起深入了解下,為以后的策馬奔騰做好鋪墊。整數整數,可以通過十進制,八進制,十六進制的字面值來表示。對前面定義的八進制和十六進制數值進行運算浮點數浮點數其實就是我們通常所說的小數,所以一定有個小數點。
Number 類型作為 JS 的基本數據類型之一,被應用在程序中的各種場景,其重要性就如數字對于我們日常生活。
下面就讓我們來一起深入了解下,為以后的“策馬奔騰”做好鋪墊。
一般來說我們可以直接使用數值字面量格式來定義一個數字,如下:
var num1 = 15; var num2 = 7; console.log(typeof num1); // number console.log(typeof num2); // number數值類型
定義的數值可分為兩種類型,分別為整數和浮點數。
整數,可以通過十進制,八進制,十六進制的字面值來表示。(默認為十進值)
// 十進制 var intNum1 = 55; // 正數 var intNum2 = 0; // 0 var intNum3 = -3; // 負數 // 八進制 // 第一位必須是0,其余位的取值范圍為0-7 // 無效的八進制會直接忽略前面的0,解析為十進制 var octalNum1 = 070; // 八進制的56(7*8 + 0) var octalNum2 = 079; // 無效的八進制數,9超過了8進制數的范圍,解析為79 var octalNum3 = 08; // 無效的八進制數,直接解析偽8 // 十六進制 // 前兩位必須是0x,其余位的取值范圍為 0~9 或 A~F var hexNum1 = 0xA; // 十六進制的10 var hexNum2 = 0x1f; // 十六進制的31(1*16 + 15) 在進行算數計算時,所有以八進制和十六進制表示的數值最終都將被轉換成十進制的數值。 // 對前面定義的八進制和十六進制數值進行運算 console.log(octalNum1 + hexNum1); // 66
浮點數其實就是我們通常所說的小數,所以一定有個小數點。簡單示例如下:
var floatNum1 = 5.2; var floatNum2 = 3.14;
浮點數所占據的內存空間是整數的兩倍。如果小數點后只有零或沒有數字,為了節省內存空間,則該小數會被轉化為整數,如下:
var floatNum3 = 5.0; // 5 var floatNum4 = 2.; // 2
進行算術運算時,浮點數不如整數精準,所以一般不要使用浮點數進行計算,如下:
var floatNum4 = 0.1; var floatNum5 = 0.2; // 0.1 + 0.2 不等于 0.3 console.log(floatNum4 + floatNum5); // 0.30000000000000004
對極大極小的浮點數一般會采用e表示法,如下:
var floatNum6 = 3.2e7;// 3.2×10(7次冪) var floatNum7 = 3.2e-7;// 3.2×10(-7次冪)NaN
NaN 是 not a number 的簡寫,即非數字。它是一個特殊的值,這個數值用于表示一個本來要返回數值的操作數,結果未返回數值的情況。
NaN 有兩個不同尋常的特點:
任何涉及 NaN 的操作都會返回 NaN
NaN 值與任何值都不相等,包括本身。
console.log(NaN / 10); // NaN
console.log(NaN == NaN); // false
針對這兩個特點,JS 提供了一個 isNaN()函數。該函數接受一個參數(可以是任何類型),而函數會幫我們確定這個參數是否“不是數值”。
注:傳遞的參數會涉及數值轉換的問題,例如“10”這個字符串就可以轉換為 10,但是“blue”這個字符串則無法轉換為數字,所以 isNaN("blue") == true
console.log(isNaN(NaN)); // true console.log(isNaN(10)); // false console.log(isNaN("10")); // false,可以被轉成數值 10 console.log(isNaN("blue")); // true console.log(isNaN(true)); // false,可以被轉成數值 1數值轉換
有三個函數可以把非數值轉換為數值:Number(),parseInt(),parseFloat()。第一個可以用于任何數據類型,后兩個則專門用于把字符串轉化為數值。
簡單示例如下:
// Number() // 轉換規則比較復雜,可詳細參考下面的資料 var numN1 = Number("Hello world!"); // NaN var numN2 = Number(" "); // 0 空字符串轉為0 var numN3 = Numberl("000011"); // 11 var numN4 = Number(true); // 1 // parseInt // 忽略小數點 // 字符串會被轉成數值 var numI1 = parseInt(22.5); // 22 var numI2 = parseInt ("1234blue") ; // 1234 var numI3 = parseInt (" ") ; // NaN var numI4 = parseInt("70"); //70(十進制數) var numI5 = parseInt ("070") ; // 56(八進制數) var numI6 = parseInt ("0xA") ; // 10(十六進制數) // parseFloat // 字符串會被轉成數值 // 如果有多個小數點,則只去第一個,其余全部舍棄 var numF1 = parseFloat ("1234blue") ; // 1234(整數) 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
詳細介紹可參考:
JavaScript數值轉換(非數值轉換為數值)
parseInt
parseFloat
數值范圍由于內存的限制,JS 并不能保存所有的數值。那么其能表示的最大最小值到底是多少呢?我們可以使用 Number 對象的 MIN_VALUE 和 MAX_VALUE 屬性表示(很少很少用到,大概知道就可以,真要用的時候可以再查閱):
Number.MIN_VALUE 為能表示的最小正數即最接近 0 的正數 (實際上不會變成 0),它的近似值為 5 x 10-324。
Number.MAX_VALUE 為能表示的最大正數,它的近似值為 1.7976931348623157 x 10308
如果一個數值超過了最大能表示數值,則自動變成 Infinity 值(無窮數),我們可以使用 Number 對象的 isFinite() 來判斷一個數是否是有限數,如果非有限數則為無窮數。
console.log(Number.isFinite(56)); // true console.log(Number.isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); // false
更多 Number 對象的屬性和方法可參考:Number 對象 | MDN
數學函數回憶想想,我們上學的時候是不是學過很多處理數字的數學公式啊,那在 JS 中該怎么辦?
不用慌,JS 中內置了一個 Math 對象,它具有數學常數和函數的屬性和方法。
我們先來幾個簡單的例子:
// 函數返回一個數字四舍五入后最接近的整數值。 Math.round(3.4); // 3 // 函數返回一個隨機浮點數, 范圍在[0,1) Math.random(); // 隨機浮點數,每次都不一樣 // 函數返回一個數的平方根 Math.sqrt(9); // 3 // 函數返回給定的一組數字中的最大值 Math.max(10, 20, 13, 18); // 20 //sin 方法返回一個 -1 到 1 之間的數值,表示給定角度(單位:弧度)的正弦值。 // Math.PI 表示圓周率,一個圓的周長和直徑之比,約等于 3.14159. Math.sin(Math.PI / 2); // 1
更多 Math 對象可參考:Math 對象 | MDN
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107024.html
摘要:結合實際中的情況來看,有意或無意中涉及到隱式類型轉換的情況還是很多的。此外當進行某些操作時,變量可以進行類型轉換,我們主動進行的就是顯式類型轉換,另一種就是隱式類型轉換了。 前言 相信剛開始了解js的時候,都會遇到 2 ==2,但 1+2 == 1+2為false的情況。這時候應該會是一臉懵逼的狀態,不得不感慨js弱類型的靈活讓人發指,隱式類型轉換就是這么猝不及防。結合實際中的情況來看...
摘要:原文鏈接一個變量可以存放兩種類型的值,基本類型的值和引用類型的值。引入了一種新的原始數據類型,表示獨一無二的值。 原文鏈接 一個變量可以存放兩種類型的值,基本類型的值(primitive values)和引用類型的值(reference values)。 ES6 引入了一種新的原始數據類型 Symbol,表示獨一無二的值。它是 JavaScript 語言的第七種數據類型,前六種是:Un...
摘要:如下所示在規范中,已經正式把屬性添加到規范中也可以通過設置和獲取對象的原型對象對象之間的關系可以用下圖來表示但規范主要介紹了如何利用構造函數去構建原型關系。 前言 在軟件工程中,代碼重用的模式極為重要,因為他們可以顯著地減少軟件開發的成本。在那些主流的基于類的語言(比如Java,C++)中都是通過繼承(extend)來實現代碼復用,同時類繼承引入了一套類型規范。而JavaScript是...
摘要:原始類型和引用類型原始類型存儲簡單數據值,引用類型存儲對象,其本質是指向內存位置的應用。保存指向內存中實際對象所在位置的指針鑒別引用類型操作符以一個對象和一個構造函數為參數。這些特殊引用類型的存在使得原始引用類型用起來和對象一樣方便。 原始類型和引用類型 1.原始類型存儲簡單數據值,引用類型存儲對象,其本質是指向內存位置的應用。 注:其他編程語言用棧存儲原始類型,用堆存儲引用類型。Ja...
摘要:我們首先了解一下中有關類型轉換的知識。新增類型拋出異常從列表可以明顯看到少了一個類型轉換為的規則。這里要強調一點第二個表達式沒有涉及到強制類型轉換。如果文中有錯誤或者有某些強制轉換的情形沒有涉及到請及時留言告知,我會修改并補充進去。 javascript是一門非常奇特的語言,它有時候奇特的會讓人懷疑人生。比如讓我們看一下下面的一些奇葩例子: false == 0 ...
閱讀 3071·2021-10-11 10:58
閱讀 1988·2021-09-24 09:47
閱讀 502·2019-08-30 14:19
閱讀 1683·2019-08-30 13:58
閱讀 1443·2019-08-29 15:26
閱讀 640·2019-08-26 13:45
閱讀 2139·2019-08-26 11:53
閱讀 1772·2019-08-26 11:30