【青山学js】js基础数据类型之Number(上)

吐槽君 分类:javascript

这是我参与更文挑战的第5天,活动详情查看: 更文挑战

关于Number

Number类型也是JavaScript的基本数据类型之一,同时也是最有意思的一种数据类型。下面我们就一起来了解一下它吧

数值字面量

整数

整数字面量写法是区分进制的,整数可以被表示成十进制(基数为10)、八进制(基数为8)以及十六进制(基数为16)

八进制

对于八进制字面量,书写时候必须以0开头,然后是相应的八进制数字(数值0-7)。如果字面量中包含的数字超出了应有的范围,就会忽略了前缀的0,后面的数被当成十进制。

let num1 = 070 // 八进制的56
let num2 = 079 // 9 >= 8 无效的八进制值,忽略0,当成79处理
let num3 = 08 // 8 >= 8 无效的八进制值,忽略0,当成8处理
 

注意,ECMAScript 2015或ES6中的八进制值通过前缀0o来表示;严格模式下,前缀0会被视为语法错误,如果要表示八进制值,应该使用前缀0o。

十进制

十进制是最基本的数值字面量格式,也是我们最常见到的实质字面量,可以直接在代码中输入

十六进制

对于十六进制字面量,书写时候必须以0x开头,然后是相应的十六进制数字(0-7级A-F)。十六进制中的字母大小写均可

let num1 = 0xA // 10
let num2 = 0x1f // 31
 

浮点数

浮点数就是数学概念中的小数,有整数、小数点、小数部分组成,其中整数部分如果为0可以省略(但不推荐),小数点和小数部分必须有,因为小数会比整数更占用内存,所以js会在符合条件的情况下尽量将小数转为整数,比如小数点后面无值或者小数点后面的数字都为0,那这个数字将被转换为一个整数(因为小数)

let floatNum1 = 1.1 // 有效
let floatNum2 = 0.1 // 有效
let floatNum3 = .1  // 有效但不推荐
let floatNum4 = 2.0 // 会被转为整数 2
 

对于太大或太小的数,浮点值可以用科学计数法表示

let floatNum1 = 3.125e7 // 等于31250000
let floatNum2 = 3e-7 // 等于0.0000003
 

默认情况下,如果一个小数数的小数点后面有6个以上的0时,这个小数会自动被转换为科学计数法

let floatNum1 = 0.000000003 // 3e-9
 

浮点数的精确度最高可达17位小数。还有一个经典的问题,在js中,小数的操作时存在精度问题的,例如

console.log(0.1 + 0.2);//0.30000000000000004
console.log(1.0 - 0.9);//0.09999999999999998
console.log(19.9 * 100);//1989.9999999999998
console.log(6.6 / 0.2);//32.99999999999999
 

感兴趣的朋友可以自己去搜索一下相关的解决方案

Infinity 无穷

由于在js重,每个数值都是占用内存的,而js内存是有限的,所以js并不支持这个世界上所有的数,js中支持的最大数值为1.7976931348623157e+308,可以用Number.MAX_VALUE 获取,如果目标数值比这个数值大,则会被自动转化为 无穷大Infinity,js中支持的最小的数为5e-324,可以用 Number.MIN_VALUE获取,如果目标值比这个值小,则会被转化为 无穷小 -Infinity

回复

我来回复
  • 暂无回复内容