前言
Number 对象是原始数值的包装对象。
Number 创建方式 new Number()。
语法:var num = new Number(value);
对象属性:
- constructor:返回对创建此对象的 Number 函数的引用。
- MAX_VALUE:可表示的最大的数
- MIN_VALUE:可表示的最小的数
- NEGATIVE_INFINITY:负无穷大,溢出时返回该值
- POSITIVE_INFINITY:正无穷大,溢出时返回该值
- NaN:非数字值
- prototype:允许您可以向对象添加属性和方法。
ES6 新增的 属性
- EPSILON: 表示 1 和比最接近 1 且大于 1 的最小 Number 之间的差别
- MIN_SAFE_INTEGER: 表示在 JavaScript中最小的安全的 integer 型数字 (-(253 - 1))。
- MAX_SAFE_INTEGER: 表示在 JavaScript 中最大的安全整数(253 - 1)。
一、精度
- 整数,最多15位。999999999999999
- 小数,最多17位。0.111111111111111
二、八进制和十六进制
-
八进制
前缀为0
var y = 0377 -
十六进制
前缀为0和X
var x = 0XFF -
进制间的转换
方法:
toString()-
转为8进制:
a.toString(8) -
转为16进制:
a.toString(16)
-
三、无穷大
无穷大,数字超过JS表达范围就是无穷大
- 正无穷大:infinity
- 负无穷大:-infinity
四、NaN
NaN,非数字值的特殊值
方法:
- isNaN():判断该量是否是NaN
var x = 1000;
isNaA(x); // false
var y = NaN;
isNaN(y); // true
注意点: NaN != NaN。NaN不等于任何数,包括它自己
四、常用方法
4.1 parseFloat()
作用:将字符串转为浮点数
语法:parseFloat(string)
参数值:
- string:必填,要解析的字符串
返回值:数值。如果第一个字符不能转换为数字,则返回 NaN。
注意点:
- 只返回字符串中的第一个数字
- 允许前导和尾随空格
- 如果第一个字符不能转换为数字,
parseFloat()就返回 NaN。
示例: 演示地址
var a = parseFloat("10") // 10
var b = parseFloat("10.00") // 10
var c = parseFloat("10.33") // 10.33
var d = parseFloat("34 45 66") // 34
var e = parseFloat(" 60 ") // 60
var f = parseFloat("40 years") // 40
var g = parseFloat("He was 40") // NaN
4.2 parseInt()
作用:将字符串转为整数
语法:parseInt(string, radix)
参数值:
- string:必填,要解析的字符串
- radix:可选,代表要使用的数字系统的数字(从 2 到 36)。例如基数为 16(十六进制)表示字符串中的数字应从十六进制数解析为十进制数。如果 radix 参数被省略,JavaScript 假定如下:
- 如果字符串以“0X”开头,则基数为16(十六进制)
如果字符串以 "0" 开头,则基数为 8(八进制)。此特性已弃用- 如果字符串以任何其他值开头,则基数为 10 (十进制)
返回值:数值。如果第一个字符不能转换为数字,则返回 NaN。
注意点:
- 只返回字符串中的第一个数字
- 允许前导和尾随空格
- 如果第一个字符串不能转换为数字,parseInt() 返回 NaN。
示例:
var a = parseInt("10"); // 10
var b = parseInt("10.00"); // 10
var c = parseInt("10.33"); // 10
var d = parseInt("34 45 66"); // 34
var e = parseInt(" 60 "); // 60
var f = parseInt("40 years"); // 40
var g = parseInt("He was 40"); // NaN
var h = parseInt("10", 10); // 10
var i = parseInt("010"); // 10
var j = parseInt("10", 8); // 8
var k = parseInt("0x10"); // 16
var l = parseInt("10", 16); // 16
4.3 isFinite()
作用:判断传入的参数是否为无穷大
语法:isFinite(value)
参数值:
- value: 必需,要测试的值
返回值:布尔值。如果值为 +infinity、-infinity 或 NaN,则返回 false,否则返回 true。
示例:
var a = isFinite(123); // true
var b = isFinite(-1.23); // true
var c = isFinite(5-2); // true
var d = isFinite(0); // true
var e = isFinite("123"); // true
var f = isFinite("Hello"); // false
var g = isFinite("2005/12/12"); // false
4.4 Number.isInteger()
ES6新增
作用:判断传入的参数是否为整数
语法:Number.isInteger(value)
参数值:
- value: 必需,要检测的值
返回值:Boolean,如果是整数返回 true,否则返回 false。
示例:
Number.isInteger(0); // true
Number.isInteger(1); // true
Number.isInteger(-100000); // true
Number.isInteger(0.1); // false
Number.isInteger(Math.PI); // false
Number.isInteger(Infinity); // false
Number.isInteger(-Infinity); // false
Number.isInteger("10"); // false
Number.isInteger(true); // false
Number.isInteger(false); // false
Number.isInteger([1]); // false
4.5 isNaN()
NaN: Not a Number
作用:判断传递的参数是否为NaN(非数字)
语法:isNaN(value)
参数值:
- value: 必需。要检测的值
返回值:布尔值。如果值为 NaN,则返回 true,否则返回 false。
注意点:
此函数不同于Number特定的 Number.isNaN()方法
- 全局 isNaN 函数将测试值转换为数字,然后对齐进行测试
Number.isNaN()不会将值转换为数字,并且不会为任何非数字类型的值返回true
示例:
// 全局 isNaN() 函数
isNaN(123) //false
isNaN(-1.23) //false
isNaN(5-2) //false
isNaN(0) //false
isNaN('123') //false
isNaN('Hello') //true
isNaN('2005/12/12') //true
isNaN('') //false
isNaN(true) //false
isNaN(undefined) //true
isNaN('NaN') //true
isNaN(NaN) //true
isNaN(0 / 0) //true
isNaN(null) //false
// Number.isNaN()
Number.isNaN(123) //false
Number.isNaN(-1.23) //false
Number.isNaN(5-2) //false
Number.isNaN(0) //false
Number.isNaN('123') //false
Number.isNaN('Hello') //false
Number.isNaN('2005/12/12') //false
Number.isNaN('') //false
Number.isNaN(true) //false
Number.isNaN(undefined) //false
Number.isNaN('NaN') //false
Number.isNaN(NaN) //true
Number.isNaN(0 / 0) //true
Number.isNaN(null) //false
4.6 isSafeInteget()
ES6新增
作用:判断传递的参数是否为安全整数
语法:Number.isSafeInteger(value)
参数值:
- value:必需。要检测的值
返回值:布尔型。如果是安全整数返回 true,否则返回 false。
拓展
- 一个安全整数符合的条件:
- 可以准确地表示为一个 IEEE-754 双精度数字。
- 其 IEEE-754 表示不能是舍入任何其他整数以适应 IEEE-754 表示的结果。
- 安全整数范围: -(2^53 - 1) 到 2^53 - 1 之间的整数,包含 -(2^53 - 1) 和 2^53 - 1。
示例:
Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)) // false
Number.isSafeInteger(Math.pow(2, 53) - 1) // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
4.7 toExponential()
作用:返回一个数字的指数形式的字符串
语法:number.toExponential(value)
参数值:
- value: 可选。规定指数计数法中的小数位数,是0 ~ 20 之间的值,包括0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将使用尽可能多的数字
返回值:String。返回 Number Object 的字符串表示,采用指数计数法,即小数点之前有一位数字,小数点之后有 num 位数字。该数字的小数部分将被舍入,必要时用 0 补足,以便它达到指定的长度。
示例:
var num = 5.56789;
num.toExponential(2); // '5.57e+0'
num.toExponential(3); // '5.568e+0'
num.toExponential(4); // '5.5679e+0'
4.8 toFixed()
作用:返回指定小数位数的表示形式
语法:number.toFixed(value)
参数值:
- value: 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。
返回值:String。小数点后有固定的 x 位数字
示例:
const a = 123;
const b = a.toFixed(2); // b:123.00
const a = 123.4567
const b = a.toFixed(2); // b: 123.46
4.9 toPrecision()
作用:返回一个指定精度的数字
语法:number.toPrecision(value)
参数值:
- value:可选。规定要转换为几位数,该参数是 1 ~ 100 之间(且包括 1 和 100 )的值。如果省略了该参数,则调用方法 toString(),返回原始数字的字符串形式。可选。规定要转换为几位数,该参数是 1 ~ 100 之间(且包括 1 和 100 )的值。如果省略了该参数,则调用方法 toString(),返回原始数字的字符串形式。
返回值:String。可选。规定要转换为几位数,该参数是 1 ~ 100 之间(且包括 1 和 100 )的值。如果省略了该参数,则调用方法 toString(),返回原始数字的字符串形式。
示例:
const a = 123;
const b = a.toPrecision(2); // b: '1.2e+2'
4.10 toString()
作用:把数字转换为字符串,使用指定的基数
语法:number.toString(radix)
参数值:
- radix: 可选。规定表示数字的基数,是 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。
- 2:数字以二进制值显示
- 8:数字以八进制值显示
- 16:数字以十六进制值显示
返回值:String。把数字转换为字符串
示例:
var num = 15;
var n = num.toString(); // '15'
4.11 valueOf()
作用:返回一个Number 对象的基本数字值
语法:number.valueOf()
返回值:Number。一个数的原始值
示例:
var num = 15;
var n = num.valueOf(); // 15