大家都知道javascript中有五种简单数据类型,number,string,boolean,null,undefined,复杂数据类型是object。本文主要记录下number类型的一些可能不太常用的东西。以下内容均来自javascript高级教程,算是重读这本书的读书笔记吧。
首先常用的进制肯定是10进制了,但是如果一个数字是以0开头的,就会被当作八进制的数字,如下代码:
1 var a=070; 2 console.log(parseInt(a,10)); //结果是56
十六进制也存在同样的问题,不过16进制一般我们遇到比较少,因为16进制是以0x开头的
另外,在严格模式下,如果使用八进制会报错的,看如下例子:
1 (function(){ 2 'use strict'; 3 var a=070; 4 console.log(a); 5 })() 6 //SyntaxError: Octal literals are not allowed in strict mode.
说到浮点数,js中可以这么写,但是不推荐
1 var floatNum1=1.1; 2 var floatNum2=0.1; 3 var floatNum3=.1;//可以省略前面的点 4 console.log(floatNum2==floatNum3);
var a=1. //被解析为1
var b=10.0 //被解析为10
另外,对float型的有舍入误差会导致下面的场景,0.1+0.2 != 0.3,例子如下:
1 console.log(0.1+0.2)//0.30000000000000004 2 console.log(1.0-0.9)//0.09999999999999998 3 console.log(1.0-0.6 == 0.4)//true 4 5 //这是解决办法 6 parseFloat((0.1+0.2).toFixed(10))//0.3 7 parseFloat((1.0-0.9).toFixed(10));//0.1
哈哈,好了不扯蛋了,还有两点,数值的范围跟非数值
js中的数字不是无限大的,超出某个界限就会变成Infinity,不过这个数字很大
1 Number.MAX_VALUE 2 Number.MIN_VALUE 3 Number.MAX_SAFE_INTEGER 4 Number.MIN_SAFE_INTEGER
最后,说下NaN,即not a number ,是数字计算出错的时候会返回这个比如进行除数为0的除法,可以使用isNaN来判断结果是不是非数字,另外NaN和任何数字不相等
NaN==NaN //false
最后,在使用
parseFloat之类的方法的时候要小心,后面第二个参数尽量不要省略,会有惊喜的,哈哈!
The most hurt is day after day ,I find that myself is still myself.