> 文章列表 > Number数据类型(回顾)

Number数据类型(回顾)

Number数据类型(回顾)

  • 范围
  • isNaN(value)
  • Number.isNaN(value) 与 isNaN(value) 的区别
  • 封装isNaN
  • parseInt(value)
  • parseInt(value, radix)
  • toString(radix)
  • Number.toString(radix)
  • parseFloat(value)
  • toFixed(digits)
  • Number.MAX_SAFE_INTEGER

范围

1.正数,负数,0
2.NaN ==》not a number 不是一个有效数字,但属于number类型
3.Infinity ==》无穷大的值
链接

isNaN(value)

定义:用来验证一个是否为有效数字
注意:先进行隐式类型转换,再进行比较

var a = isNaN(NaN);//true
var b = isNaN(undefined);//true  ==> Number(undefined)为NaN
var c = isNaN(null);//false  ==> Number(null) === 0
var d = isNaN('a');//true ==> Number('a')为NaN
var e = isNaN({});//true ==> Number({})为NaN
Number.isNaN(value) 与 isNaN(value) 的区别

Number.isNaN(value) 对于其他数据类型不进行隐私类型转换,直接返回false

var a = Number.isNaN(NaN);//true
var b = Number.isNaN(undefined);//false
var c = Number.isNaN(null); //false  
var d = Number.isNaN('a'); //false
var e = Number.isNaN({}); //false
封装 isNaN
const myIsNaN = (value) => String(Number(value)) === "NaN"?true:false;

Number(value)

定义:把其他数据类型’强制’转换为数字类型
注意:隐私类型转换就是使用Number转换为数字类型

字符串转数字
  1. 字符串中只要有非有效数字字符,则为NaN
var a = Number('2a');//NaN
  1. Number('') === 0
var a = Number('');//0
布尔值转数字
var a = Number(true);//1
var b = Number(false);//0
undefined,null转数字

Number(undefined) === NaN
Number(null) === 0

var a = Number(undefined);//NaN
var b = Number(null);//0
对象转数字
Number({});//NaN
// 第一步: {}.valueOf() 判断为对象
// 第二步: {}.valueOf().toString() === '[object Object]'
// 第三部: Number('[object Object]')为NaN
Number([]);//0
// 第一步: [].valueOf() 判断为对象
// 第二步: [].valueOf().toString() === ''
// 第三部: Number('') === ““
不能将 Symbol 转为数字
Number(ymbol.for('a'));//报错
//TypeError: Cannot convert a Symbol value to a number

parseInt(string)

定义:整型,从字符串最左边开始,把找到的有效数字转化为数字,直到遇到第一个非有效数字

var a = parseInt(1.1);//1
var b = parseInt('1a');//1
var c = parseInt(['1a']);//1
parseInt(string, radix)

定义:按进制返回一个整数基数(十进制)
radix:2-36的整数,超出则返回NaN
注意:parseInt(value, 0) 相当于 parsrInt(value)

var a = parseInt(101,2);//5
var b = parseInt(101,8);//65
var c = parseInt(101,1);//NaN
var d = parseInt(101,37);//NaN
二进制,八进制,十六进制的简易表达
parseInt(0b11, 0);//3   => 0b  二进制
parseInt(0o11, 0);//9   => 0o  八进制
parseInt(0x11, 0);//17  => 0x  十六进制
扩展:
let arr = [1, 2, 3, 4];
console.log(arr.map(parseInt))// [1,NaN,NaN,NaN]
console.log(parseInt(1,0,arr))//1
console.log(parseInt(2,1,arr))//NaN
console.log(parseInt(3,2,arr))//NaN
console.log(parseInt(4,3,arr))//NaN

Number.toString(radix)

定义:把基数(十进制)变为目标进制数
radix:2-36的整数

var a = 4.toString(2);//'100'
var b = 36.toString(36);//'10'

parseFloat(string)

定义:浮点型
与 paseInt 的区别:多识别一位小数点

var a = parseFloat(1.123);//1.123
var b = parseFloat('1.123a');//1.123
var c = parseFloat(['1.123a']);//1.123

toFixed(digits)

定义:四舍五入保留小数点后N位,返回字符串
注意:
1.digits为0时,返回 0
2.digits 的范围在 0-100的整数

const x = 1 / 3;
var a = x.toFixed(2);//0.33
var b = x.toFixed(0);//0
var c = (123123.3457).toFixed(3);//123123.346

Number.MAX_SAFE_INTEGER

定义:最大安全整数(js可识别的最大整数)
数值:9007199254740997