今天要讲的数值型(Number)是ECMAScript中最让人关注的数据类型了。因为涉及到十进制,八进制等转换计算之类的,对于初学的你们来说真的不好理解。所以,这篇文章对Number的讲解省略一部分,因为在开发中很少用到,也不会影响以后的学习。
我们经常用到的,可以直接在代码中输入的数值字面格式是十进制。大家记住就好了,对进制转换这块小编先不讲。
浮点数值
浮点数值,就是该数值后面包含一个小数点,并且小数点后面必须至少有一个数字。虽然小数点前面可以没有整数,但是我们不推荐这样的写法。
以下是几个浮点数值的例子,
var floatNum1=1.2;
var floatNum2=0.5;
var floatNum3=.1; //有效,但是不推荐
由于保存浮点数值是保存整数值的两倍,所以,如果小数点后面没有数值或者浮点数值本身就表示一个整数(如1.0),那么ECMAScript就会把该值转换成整数,如下:
var floatNum4=1.; //解析为1
var floatNum5=10.0; //解析为10
对于极大或者极小的数值,可以用e表示法(科学计数法)表示的浮点数值表示。e表示法表示的数值等于e前面的数值乘以10的指数次幂。即前面是一个数值(可以是整数也可以是浮点数),中间一个大写或者小写的字母E,后面是10的幂中的指数,该指数将用来与前面的数相乘。如下:
var floatNum=3.125e7; //等于31250000
上面的例子中,表示的是3.125乘以10的七次方。
也可以用e表示法表示极小的数值,如
var floatNum=3e-17; //等于0.00000000000000003
默认情况下,ECMAScript会将小数点后面带有6个零以上的浮点数转换成以e表示法表示的数值。
如:
var floatNum=3e-7; //表示0.0000003
我们需要注意的是,浮点数值做高精度是17位小数,但在进行算术计算时其精确度远远不如整数。例如0.1加0.2结果不是0.3,而是0.30000000000000004。所以这个小小的舍入误差会导致无法测试特定的浮点数值。例如:
if(a+b==0.3){ //不要做这样的测试!!!
console.log("You got 0.3")
}
关于浮点数值计算会产生舍入误差的问题,有一点需要明确:这是基于IEEE754的通病,并不是ECMAScript一家如此,其他使用相同数值格式的语言也存在这个问题。
爱学习的孩子运气不会差哦~
关注小白前端,持续收到文章推送!