数字类型包含:正数、负数、零(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);
十进制(最常用)
八进制(仅了解即可)
十六进制(仅了解即可)
前两位必须0x
有效序列
小数点后至少一位数字
可以用科学计算法
最高精度: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:
超出范围
正无穷
负无穷
缺陷
检测方法,用isFinite
isFinite(5e10) // true
isFinite(2e+310) // false
含义
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
console.log(10 + "10");
console.log("10" + "10");
console.log(+"10"+ + "10");
console.log((+"10") + (+"10"));// 注:括号是非必需的
console.log(-"10"+ 10);//了解下
数据类型的系统默认转换;
Boolean转换为数值的时候
null转换为数值的时候 转换为0
undefined转换为数值的时候 转为NaN
string转换为数值的时候
""
是空字符串 " "
这个就不是空字符串了Object 调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转换的结果是NAN,则调用对应的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);
原文:https://www.cnblogs.com/jiaweixie/p/13089958.html