提及Number,應該是ECMAScript中最使人關注的數據類型了,遵循IEEE754格式,最基本的聲明以下: 函數
var intNum = 34; //整數 var a = 070; //若數值起始爲0,JS嘗試解析爲8進制數字 var b = 079; //八進制解析失敗,解析爲十進制,返回79 var c = 08; //八進制解析再次失敗,返回8 var d = 0xA; //若其實爲0x或者0X,則嘗試解析爲十六進制 var e = 0x1f; //同上,而且ABCDEF不區分大小寫一、浮點數值
浮點數值的聲明有兩種方法 測試
var a = 34.34 var b = .34 //不推薦碰到比較大或者比較小的數值能夠用科學記數法來表示
var as = 342343.34e9; //表示342343.34乘以10的9次方可是,浮點數值的最高精度是17位小數,但在進行算術計算時其精度就遠遠不如整數,因此會出現以下狀況
所以,永遠不要測試特定的浮點數的值,好比: spa
function fn(a,b) { return a + b; } console.log('今天花了' + (1.2 + 122.6) + '元'); //不可靠 //那怎麼辦呢,涼拌!! console.log('今天花了' + (1.2 * 100 + 122.6 * 100) / 100 + '元'); //湊合二、數值範圍
JS能容忍的最大數值在Number對象中已經明確給出: code
Number.MAX_VALUE 對象
Number.MIN_VALUE ip
若是計算出來的值大於這個maxvalue,則返回Infinity值,同理若是小於,則是-Infinity,其實Number.NEGATIVE_INFINITY與POSITIVE_INFINITY也分別保存着這兩個值 字符串
若是想要判斷某個數值是否在最大值與最小值之間呢?isFinite()!! it
三、NaN io
先看以下有趣的測試: console
Infinity + Infinity = NaN
NaN : not a number 意思爲不是一個數字,它最特殊的地方就是「任何值都與它不相等,甚至於它本身」
再看:,是的,0/0 在JS中沒有報錯,獲得NaN,2/0更不會報錯,獲得一個Infinity!!!!
可是,咱們有個牛逼函數,isNaN,這個函數判斷一個數值是否是不是一個數字(很繞吧)
毀三觀了?其實很好理解嘛,1是個數字,因此他is a number 而非 not a number
空字符串能夠轉換爲0,因此也not not a number
'fdsaf'不可轉換爲數字,因此not a number is true !!!
NaN原本就不是一個數字,理所應當了
'12'能夠轉換爲數字,因此返回false
true與false可轉換爲1和0,因此也是false啦
後續爲數值轉換、Number內置函數、Math對象,歡迎拍磚!