javascript 中的number

  大家都知道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之类的方法的时候要小心,后面第二个参数尽量不要省略,会有惊喜的,哈哈!
原文地址:https://www.cnblogs.com/onedayof2010/p/4497488.html