数据类型

确认一个数值是否超出范围,可以使用isFinite()函数,如果没超过返回true,超过了返回false
var box=100e1000;//
alert(isFinite(box));

NaN即非数值 (Not a Number)是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数
未返回数值的情况(这样就不会抛出错误),比如在其他语言中,任何数值除以0都会导致错误而终止
程序执行,但在ECMA中会返回特殊的值,因此不会影响程序的执行

var box=0/0;//数字中第一个可以是0,第二个不可以是0。 返回NaN
alert(box)


var box=12/0;//超过范围 infinity
alert(box);
var box=12/0*0 返回NaN
alert(box)

 

可以通过Number.NaN的值得到NaN的值,任何与NaN进行运算的结果均为NaN,NaN与自身不相等(NaN不与任何值相等)

alert(Number.NaN) 得到NaN

var box=NaN+1;// NaN
alert(box);

alert(NaN==NaN)// false,不相等,因为他可能是处以0造成的,也有可能是正无穷造成的所以不相等

 


isNaN()函数判断是不是NaN 数据类型


var box=0/0;
alert(isNaN(box)); 返回 true ,


var box =0/12;
alert(isNaN(box)); 返回flase;


alert(isNaN("12")); 返回flase //字符串数值自动转换成数值


alert(isNaN("dasdas")) 返回true,dasdas不能转换为数值。


alert(isNaN(true)); 返回false,因为true是1 false是0,

 

/Number()函数,把非数值转换为数值
alert(Number(true)) Boolean类型的true和false分别转换成1和0


alert(Number(null)) 空对象返回0

alert(Number(undefined)) 返回NaN

 

alert(Number("070")) // 返回70, 十进制会把0自动去掉

alert(Number("09.90")) // 返回9.9, 浮点型数值会把前的0和后面的0自动去掉

alert(Number(""))返回0 如果字符串为空返回0

alert(Number("123w123"))//返回NaN,因为包含字母

 

//parseint()函数只能转换字符串至数值,

alert(parseInt("qq456qq"));返回NaN因为第一个不是数值

alert(parseInt("456qq")); 返回整数部分

alert(parseInt("456qq456qq")); 返回 456,从第一数值开始取,然后有字母不返回了,

alert(parseInt("56.12")); 返回56,遇到点.不返回


alert(parseInt("")); 返回NaN


//parseIn()函数只能转换字符串至数值,除了能识别十进制数值,也能识别八进制和十六进制

alert(parseInt("0xA"));返回10,16进制

 

alert(parseInt("0xALEE")); 返回10,后面的字母LEE省略了

alert(parseInt("70",8)); //返回70, 8进制

 

alert(parseInt("0xAF")); 175,16进制

alert(parseInt("AF",16))第二个参数指定十六进制,可以去掉0x前导


alert(parseInt("AF")); 返回NaN 理所当然


alert(parseInt("1010101010101101010",2)) 2进制转换

alert(parseInt("70",8)) ,返回56, 八进制转换,前面不用0


parseFloat()用于浮点数值转换的,和parseInt一样,从第一位解析到非浮点数值位置


alert(parseFloat("123Lee")); 123

alert(parseFloat("0xA")); 0,浮点数不认十六进制

alert(parseFloat("123.4.5")); 123.4 只认第一个小数点

alert(parseFloat("0123.4.50")); 123.4,去掉前导和后导

alert(parseFloat("1.234e7"));12700000//把科学技术法转成普通数值

 


Number类型包含两种数值:整型和浮点型,ECMA定义了不同的数值字面量格式。有十进制 ,八进制
十六进制。
var box=100;//十进制整型

alert(box)

 

var box=070;//八进制数值字面量,前导必须是0,八进制序列0-7

alert(box)

var box=079;//有个9,无效8进制,自动解析为79

alert(box)

var box=08;//8为基数不能超过8,无效8进制,自动解析为8

alert(box)


十六进制字面量前面两位必须是0x,后面是(0-9及A-F)
var box=0xA;//十六进制,输出10

alert(box)


var box=0x1f;//十六进制,输出31

alert(box)


浮点类型,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字,浮点型就没有进制
var box=03.8; 错误,前面不能有0
alert(box);

var box=00.8; 错误
alert(box);

var box=0.80; //0.8,把后导去掉
alert(box);

var box=.8; //0.8,对的,但不推荐此写法
alert(box);

由于保存浮点数值需要的内存空间比整型数值大两倍,因此EMCA会自动将可以转换为整型的浮点数值
转成为整型
var box=8.0; //8,
alert(box);

//对于过大或者过小的数值,可以使用科学计数法来表示(e表示法),用e来表示数值的前面10的指数次幂
var box=4.12e9; 41200000
alert(box)

var box=0.000000412; 4.12e-7
alert(box)


虽然浮点数值的最高精度是17位,但是算术运算符可能会不准确,判断的时候一定要考虑到这个问题
alert(0.1+0.2)


浮点数值范围在Number.MIN_VALUE~Number.MAX_VALUE之间

 


//如果超过浮点数值的最大值和最小值,那么就先出现Infinity(正无穷)或者-infinity(负无穷)

var box=100e1000;
alert(box);

var box=-100e1000;
alert(box);


//如果超过浮点数值的最大值和最小值,那么就先出现Infinity(正无穷)或者-infinity(负无穷)

//也可以通过Number.POSITIVE_INFINITY,和Number.NEGATIVE_INFINITY得到正无穷Infinity和负无穷-Infinity的值

alert(Number.POSITIVE_INFINITY); //正无穷

alert(Number.NEGATIVE_INFINITY) //负无穷

posted @ 2018-09-08 11:45  信念-在空中飘扬~  阅读(142)  评论(0编辑  收藏  举报