# 一.数据分类[Number]
# 1.范围
- number 包含正数、负数、零、小数、NaN
typeof NaN; //NaN 不是一个数,但是属于 number 数据类型
1
# 2.转换
数字进制
// 八进制第一个数字必须是零(0),然后是相应的八进制数字(数值0~7)
let octalNum1 = 070; // 八进制的54
let octalNum2 = 079; // 无效的八进制值,当成79 处理
let octalNum3 = 08; // 无效的八进制值,当成8 处理
// 十六进制字面量,必须让真正的数值前缀0x(区分大小写),然后是十六进制数字(0~9 以及A~F)
let hexNum1 = 0xa; // 十六进制10
let hexNum2 = 0x1f; // 十六进制31
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
严格转换为数字
:如果是把一个字符串转换为数字,只有字符串中的每一个字符都是有效数字字符,才可以正常转换,相反只要有一个不是有效数字字符(除了空格符),最后结构就是 NaNNumber(true); //1 Number(false); //0 Number(null); //0 Number(""); //0 Number(undefined); //NaN Number("12"); //12 Number("12px"); //NaN Number(" 1 "); //1
1
2
3
4
5
6
7
8非严格转换数字
:parseInt/parseFloat 从左到右一次查找,把有效的数字字符转换为数字,但是一旦遇到一个非有效的数字字符,立即停止查找(不管后面是否还有都不再查找了)parseInt("12px"); //12 parseInt("12px13"); //12 parseInt("px12"); //NaN parseInt("12.5px"); //12.5 parseFloat("12.5px"); //12.5
1
2
3
4
5转换为整数
:参数 1:要转换的变量,参数 2:以什么进制来转换这个数值,默认 10 进制,0 也是 10 进制parseInt("234blue"); // 234 parseInt("blue234"); // NaN parseInt(""); // NaN parseInt("44.5"); // 44 parseInt("070"); // 54(8进制) parseInt("0xf"); // 15(14进制) parseInt("070", 10); // 后面告诉浏览器这是10进制
1
2
3
4
5
6
7转换为小数
:只解析 10 进制,没有小数点或小数点后面都是 0 会返回整数parseFloat("1234blue"); // 1234 整数 parseFloat("0xA"); // 0 parseFloat("22.54.5"); // 22.54
1
2
3
转换为字符串
: 不能转换 null 和 undefined(11) .toString()( // '11' 字符串 true ) .toString(); // 'true' 字符串 toString(); // 是对象下的方法,所以不能使用
1
2
3
4
5
6
7
# 3.方法
toFixed(n):保留小数点后面 n 位
var num = 3.1415; num.toFixed(2); //3.14
1
2
3
# 4.判断
# 4.1 整数判断
- 方法一:模运算
function isInteger(num) {
return num % 1 === 0;
}
1
2
3
2
3
- 方法二:使用 Math 方法
function isInteger(num) {
return Math.ceil(num) === Math.floor(num);
}
// function isInteger(num) {
// return Math.round(num) === num
// }
// function isInteger(num) {
// return Math.floor(num) === num
// }
// function isInteger(num) {
// return Math.ceil(num) === num
// }
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 方法三:Number 方法
function isInteger(num) {
return Number.isInteger(num);
}
// 原理
// Number.isInteger =
// Number.isInteger ||
// function (value) {
// return (
// typeof value === "number" &&
// isFinite(value) &&
// Math.floor(value) === value
// )
// }
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 4.2 相等判断
- 等号的三种情况
= //赋值
== //判断左右两边的值是否相等
=== //判断左右两边的值是否觉得相等(包含数据类型)
1
2
3
2
3
- 数据类型转换规则:
- 1、如果只有一个值,判断这个值是真还是假,遵循:只有 0、NaN、""、null、undefined 这五个是假的,其余的都是真
- 3、除了 == 是比较 === 也是比较(绝对比较),
- val1 === val2 如果数据类型不一样肯定不相等
# 4.3 数字判断
isNaN
:用来检测是否为有效数字,有效数字返回 false,不是有效数字返回 trueisNaN(NaN); // true isNaN("blue"); // true (不能被转换为数字) isNaN(10); // false isNaN("10"); // false (10可以被转换成数值10) isNaN(true); // false(可以被转换成1)
1
2
3
4
5注意
- 如果检测的值不是 number 类型的,浏览器会默认先通过 Number 把它强制转换为 number 类型,然后再检测是否为有效数字
- isNaN 首先会调用对象的 valueOf() 方法,然后再确定返回的值是否可以转换为数值。如果不能,再调用 toString() 方法,并测试其返回值
isFinite
:检测有限的合法数字- 出现小数精度丢失的原因,JavaScript 可以存储的最大数字、最大安全数字,JavaScript 处理大数字的方法、避免精度丢失的方法
- 除 NaN 与 Infinity 都返回 true
isFinite(NaN); // false isFinite(Infinity); // false
1
2
← 数据类型 二.数据分类[String] →