核心JavaScript(一):數據類型與變量之Number初探

提及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對象,歡迎拍磚!

相關文章
相關標籤/搜索