主题
Number 类型
整数
十进制
jsconst num = 10
八进制,第一个数字必须是零。在严格模式下会报错
jsconst num1 = 070 // 八进制的56 const num2 = 08 // 无效八进制,当成 8 处理
十六进制,前缀必须是 0x
jsconst num = 0xA // 十六进制的 10
-0 === +0
浮点值
定义浮点值:必须包含小数点,且小数点后面必须至少有一个数字。最高精度为
17
位小数jsconst num1 = 0.1 const num2 = .1 // 有效,但不推荐
如果数值本身是整数,只是小数点后面跟着0,则会被转化为整数
jsconst num1 = 1. // 当成整数 1 处理 const num2 = 1.0 // 当成整数 1 处理
科学计数法
要求:一个数值后跟着一个大写或小写的 e
,再加上一个要乘的 10 的多少次幂(可以是负数)
js
const num = 3.12e5 // 等于 312000
范围
在 Number.MIN_VALUE ~ Number.MAX_VALUE 之间,超出范围会转换成无穷值(-Infinity 或 Infinity)
判断一个数值是不是有限大,可以用 isFinite()
函数
js
inFinite( Number.MAX_VALUE + Number.MAX_VALUE ) // false
NaN
表示要返回的数值不是数值(Not a Number)
NaN 不等于任何值,包括自己
涉及 NaN 的任何操作都返回 NaN
可以用
isNaN()
函数判断一个值,是否不是数值
数值转换
Number()
类型 | 转换规则 |
---|---|
Boolean | - true 转换为 1 - false 转换为 0 |
Number | 本身 |
Null | 0 |
Undefined | NaN |
String | - 字符串包含数值字符,包括数值字符前有 +/- ,转换为十进制数值 - 字符串包含有效的浮点值,转换为浮点值 - 字符串包含有效的十六进制格式,转换为与该十六进制对应的十进制整数 - 空字符串,转换为 0 - 其余情况,则返回 NaN |
Object | 1. 调用 ValueOf(),按照上述规则转换返回的值,如返回结果为 NaN,则走到第 2 步 2. 调用 toString(),再按照转换字符串的规则转换 |
parseInt():更适合字符串是否包含整数模式
- 从第一个非空字符开始转换,即会忽略最前面的空格
- 第一个字符不是数值字符、+、-,则返回 NaN(空字符会返回 NaN)
- 第一个字符是数值字符、+、-,则继续检查每个字符,直到字符串末尾,或碰到非数值字符
- 第一个字符是 0,也可以识别不同进制的整数格式
js
parseInt("") // NaN
parseInt("123blue") // 123
parseInt("11.22") // 11
parseInt("0xA") // 10
可以接受第二个参数,指定
进制数
parseFloat():几乎和 parseInt 一样,以下是一些不同之处
- 检查到字符串末尾,或第一个无效的浮点数值字符为止
- 直解析十进制,会忽略开头的 0,十六进制始终返回 0
js
parseFloat("22.34.5") // 22.34
parseFloat("0xA") // 0
包装类型方法
请看 5-3 原始值包装类型
的 Number 包装类型方法