javascript的数据类型分为两大类:原始类型和对象类型
原始类型包括数字,字符串,布尔值,null,undefined。除了原始类型就是对象。
数字
JavaScript不区分整数和浮点数,在JavaScript中所有值均有浮点数值表示。一个实数是由整数部分,小数点和小数部分组成的。语法规则如下
[num][.num][(E|e)[+|-]num]
3.14159
0.23333
1213.456
6.18e10//6.18乘以10的10次方
1.14E-5//1.14乘以10的-5次方
数字支持的基本算数运算有加减乘除求余(+ - * / %
),复杂的算数运算是通过作为Math对象的属性定义的函数和常量实现
Math.pow(2,3) //2的3次幂2*2*2
Math.round(.6) //四舍五入=>1.0
Math.ceil(.6) //向上取整=>1.0
Math.floor(.6) // 向下取整=>0.0
Math.abs(-5)//取绝对值=>5
Math.max(1,2,3)//返回最大值=>3(比较的数字个数不定)
Math.min(1,2,3)//返回最小值=>1(比较的数字的个数不定)
Math.random()//生成一个大于等于0.0小于1.0的伪随机数
Math.PI//圆周率
Math.E//e:自然对数的底数
Math.sqrt(2)//开方,根号2
Math.sin(0)//三角函数:还有Math.cos等,填入的参数是弧度制
Math.log(10)//10的自然对数
Math.log(100)/Math.LN10//以10为底100的对数
Math.exp(3)//e的三次方
Infinity
表示无穷大,加负号之后就是负无穷大,NaN
表示非数字值
二进制浮点数和四舍五入存在的错误
许多时候数值的表示只是无限接近某个数,但是不等于那个数。二进制浮点数表示可以精确的表示1/2,1/4,1/8,…1/1024但是无法精确的表示日常习惯的1/10,1/100,1/1000等。
var a=0.3-0.2;//照常理是等于0.1其实不是,而是无限的接近0.1
var b=0.2-0.1;
a==b//=>false 正常的理解是0.1==0.1但是确实是false
这个问题主要出现在比较两个数值的时候出现,其他情况不会出现大的影响。所以在货币的比较的时候建议不要比较0.1元的问题,放大比较到分而不是元,0.1元级别变为10分。