JS之Number类
JS之number类型
数字类型
数字类型包含:正数、负数、零(0/-0/+0)、小数、以及特殊的NaN;
//正数,负数,零,NaN都是属于Number
// NaN -> Not a Number不是一个数,但是属于数字类型
console.log(typeof 222);
console.log(typeof 222.22);
console.log(typeof -10);
console.log(typeof -10.34);
console.log(typeof 0);
console.log(typeof -0);
Number特性
进制
- 
十进制(最常用) 
- 
八进制(仅了解即可) - 第一位必须是0
- 有效序列0-7(0后面跟着由0-7[包括0-7]之间的数字组成的序列)
- 如果超出范围
- 前导位0被忽略
- 后续数值以十进制计数
 
 
- 
十六进制(仅了解即可) - 
前两位必须0x 
- 
有效序列 - 0-9
- A-F
 
 
- 
浮点数
- 
小数点后至少一位数字 
- 
可以用科学计算法 
- 
最高精度:17位小数 
- 
缺点 - 
存在舍入误差(浮点数之间的运算也是非常不准确的,需要转成整数,然后再运算,运算后再转回对应的小数) 
- 
无法测试特定浮点数值,不要直接对浮点数进行运算; 
- 
在做有浮点数运算的情况下,先转成整数,然后得到结果后再转成小数; //浮点数直接运算,结果不一定是正确的; var test1=0.1+0.2; console.log(test1);//0.30000000000000004 var test2=(0.1*10+0.2*10)/10; console.log(test2);//0.3
 
- 
- 
数值范围 - 
最小值 Number.MIN_VALUE 
- 
最大值 Number.MAX_VALUE: 
- 
超出范围 - 
正无穷 - Infinity
- Number.POSITIVE_INFINTY
 
- 
负无穷 - -Infinity
- Number.NEGATIVE_INFINITY
 
- 
缺陷 - 无法参与下一次计算
 
- 
检测方法,用isFinite isFinite(5e10) // true isFinite(2e+310) // false
 
- 
 
- 
NaN
- 
含义 - 
Not a Number 
- 
非数值,不是一个数值,但是NaN属于数值类型; console.log(10-"xyz");//NaN Not a Number var NaNVal=10-"xyz"; console.log(typeof NaNVal);//number NaN是number类型 console.log(NaNVal==NaNVal);//false 自己和自己都不相等,因为NaN代表的是不是一个数,属于一个集合的统称; console.log((22*"aa")==(22*"bb"));//false console.log((22*"aa")==22);//false
 
- 
- 
特点 - 
任何涉及NaN的操作都将返回NaN 
- 
NaN与人和数值都不相等包括其自身 console.log(NaN==NaN) // false
 
- 
- 
检测 isNaN - 
可以转换为数值,为false 
- 
不能转换为数值,为true //isNaN var age=25; var ageError=25-"男"; console.log(isNaN(age));//false age这个值不是一个数,对吗? -> 不对 ->false console.log(isNaN(ageError));//true ageError这个值不是一个数,对吗? -> 对 ->true
 
- 
数值转换的三种方法
- Number() 最霸道的转换方法,只要不是纯数值类型,全部不能成功转换;
- parseInt() 是Number的升级版本;有字符串出现也可能转换为数值;从前往后开始转,只要有一位可以转为数字都可以成功转换为数字;123sad可以转为123;(备注:会忽略浮点号;遇到第一个非数值的符号后直接退出转换,其中”.“也是不合法的数值符号)
- parseFloat() 属于parseInt的升级版本;可以转换为浮点数123.12dw可以转换为123.12;
- -0 比如”5”-0; 这个方法也属于Number()的;但是它属于隐式调用Number方法;
- +“52” 这种也可以转化为数字;使用单目加法运算符,也是可以将字符串转换为数字的。(运算符那节会讲,现在仅作了解即可;)
console.log(10 + "10");
console.log("10" + "10");
console.log(+"10"+ + "10");
console.log((+"10") + (+"10"));// 注:括号是非必需的
console.log(-"10"+ 10);//了解下
Number()
数据类型的系统默认转换;
- 
Boolean转换为数值的时候 - true转为1;
- flase转为0;
 
- 
null转换为数值的时候 转换为0 
- 
undefined转换为数值的时候 转为NaN 
- 
string转换为数值的时候 - 如果只包含数字
- 转为十进制数
- 前导0被忽略
 
- 如果包含有效浮点格式
- 浮点数值
- 忽略前导0
 
- 包含有效十六进制格式;相同大小的十六进制整数
- 空字符串转为0;备注:""是空字符串" "这个就不是空字符串了
- 其他格式字符串NaN
 
- 如果只包含数字
- 
Object 调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转换的结果是NAN,则调用对应的toString方法,然后再次依照前面的规则转换返回的字符串值; - ValueOf()
- ToString()
 console.log(Number("hello word"));//NaN console.log(Number(""));//0 console.log(Number("000011"));//11 console.log(Number("true"));//NaN console.log(Number(true));//1 console.log(Number("22"));//显式 22 console.log(Number(false));//显式 ->0 console.log(Number(true));//显式 ->1 console.log(Number(null));//显式 -> 0 console.log(Number(undefined));//显式 NaN console.log(Number({}));//显式 console.log(Number("22.22")); console.log(Number("22.22a"));//失败了 NaN
练习
console.log(("++++++++"));
console.log(13%10); //13/10    3   多余的3 会被输出
console.log(5%3);//2
var time=623648364569346563463;//time单位是秒;转为X分X秒;
var minis=parseInt(time/60);//保存是分钟
var second=time%60; // 秒
var targetVal=minis+"分"+second+"秒";
console.log("  minis:"+minis+"  second:"+second);
console.log(targetVal);

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号