JavaScript学习笔记-数据类型(Number)
Number类型概述
Number 类型使用 IEEE 754 格式表示整数和浮点值
不同数值类型有不同的数值字面量格式
八进制字面量:
1
2
3
4
5
6
7/*
1、第一个数字必须是0,然后对应八进制数字
2、字面量中数字超出范围就会忽略第一个0,然后当作十进制处理
*/
let num1 = 070;//56
let num2 = 079;//十进制79
let num3 = 08;//十进制8十六进制字面量:
1
2
3
4
5
6/*
1、前缀为0x且区分大小写
2、字母大小写均可
*/
let num1 = 0xa;//10
let num2 = 0x1F;//31
浮点数
基础知识
- 定义:数值中必须包含小数点,并且小数点后面必须至少有一个数字
1
2
3let floatNum1 = 5.20;
let floatNum2 = 13.14;
let floatNum3 = .20;//不推荐使用 - 存储浮点值使用的内存空间是整数值的两倍
科学计数法
- 用于表示一个应该乘以10的给定次幂的数值
- 表示方式:
1
2
3let num1 = 3.125e7
let num2 = 31250000
console.log(num1 == num2)//true - ES会将小数点后至少包含6个零的浮点值转为科学计数法
精确度
- 精确度可达17为小数
1
2console.log(0.05+0.25 == 0.15+0.15)//true
console.log(0.1+0.2 == 0.3)//false - IEEE 754标准:
值的范围
- 由于内存的限制,ES并不支持所有数值
- 如果某个计算得到的数值结果超出了 JavaScript 可以表示的范围,那么这个数值会被自动转换为一个特殊的 Infinity
- 无法表示的负数:-Infinity(负无穷大)
- 无法表示的正数:Infinity(无穷大)
- 当计算返回正/负无穷时不能再进一步用于任何计算。
- isFinite()函数可用于检测值是不是有限大
- Number.NEGATIVE_INFINITY和Number,POSIYIVE_INFINITY可以获取正/负无穷
1
2
3
4
5let result1 = 3+5;
console.log(inFinite(result1));//true
------------------
let result2 = Number.MAX_VALUE + Number.MAX_VALUE
console.log(inFinite(result2));//false
NaN
- 表示不是数值
- ES中,0,+0,-0相除会返回NaN:
1
2console.log(0/0);//NaN
console.log(-0/+0);//NaN - 分母是有符号或无符号0,返回正/负无穷:
1
2console.log(512/0);//Infinity
console.log(512/-0);//-Infinity - NaN不等于包括NaN在内的任何值
1
console.log(NaN == NaN)//false
- isNaN()用于检测是否为NaN
- 可接受任意数据类型
- 任何不能转换为数值的值都会使得函数返回true
数据类型 | 内容 | 结果 |
字符串 | 可以转换为数值 | false |
不可以转换为数值 | true | |
布尔值 | true | false |
false | true | |
数值 | 数字 | false |
NaN | true | |
数值转换
转换函数 | Number() | parseInt() | parseFloat() |
---|---|---|---|
布尔值 | true → 1 false → 0 |
NaN | NaN |
数值 | 直接返回 | 返回对应整数 | 返回对应数值 |
null | 返回0 | NaN | NaN |
underfined | 返回NaN | NaN | NaN |
字符串 | ①包含有(无)符号数字字符串→对应十进制数值 ②包含有效浮点值→对应浮点数 ③包含十六进制格式→对应十进制 ④空字符串→返回0 ⑤除此之外→返回NaN |
①字符串最前面的空格会被忽略,从第一个非空格字符开始转换 ②如果第一个字符不是数值字符、加号或减号,parseInt()立即返回NaN ③如果第一个字符是数值字符、加号或减号,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符 |
①从位置 0 开始检测每个字符,解析到字符串末尾或者解析到一个无效的浮点数值字符为止 ② 始终忽略字符串开头的零 ③只解析十进制值 ④ 如果字符串表示整数(没有小数点或者小数点后面只有一个零),则返回整数 |
对象 | 调用valueOf()方法,并按上述规则返回值;如果转换结果为NaN,则调用toString()方法,再按照字符串规则转换 | NaN | NaN |
- parseInt(str,base)有两个参数:
- str:接受一个带转化的字符串
- base:为一个数值,表示进制
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 姚永坤的小窝!
评论