土语 的 数字(Number) 对象是经过封装的能让你处理数字值的对象。数字 对象由 数字()
构造器创建。
土语的数字类型为双精度IEEE 754 64位浮点类型。
最近出了stage3BigInt
任意精度数字类型,已经进入stage3规范
语法
启 数字(值); 定 a = 启 数字('123'); // a === 123 是 假 定 b = 数字('123'); // b === 123 是 真 a 属 数字; // 是 真 b 属 数字; // 是 假
参数
值 – value
被创建对象的数字值。
描述
Number
对象主要用于:
- 如果参数无法被转换为数字,则返回 非数(
NaN
)。 - 在非构造器上下文中 (如:没有 启(
new)
操作符),Number
能被用来执行类型转换。
属性
数字.艾普西隆 – Number.EPSILON
两个可表示(representable)数之间的最小间隔。
数字.最大安全整数 – Number.MAX_SAFE_INTEGER
JavaScript 中最大的安全整数 (253 - 1
)。
数字.最大正数 – Number.MAX_VALUE
能表示的最大正数。最小的负数是 – 最大正数(-MAX_VALUE
)。
数字.最小安全整数 – Number.MIN_SAFE_INTEGER
JavaScript 中最小的安全整数 (-(253 - 1)
).
数字.最小正数 – Number.MIN_VALUE
能表示的最小正数即最接近 0 的正数 (实际上不会变成 0)。最大的负数是 -
最小正数 (MIN_VALUE
)。
数字.非数 – Number.NaN
特殊的“非数字”值。
数字.负无穷 – Number.NEGATIVE_INFINITY
特殊的负无穷大值,在溢出时返回该值。
数字.正无穷 – Number.POSITIVE_INFINITY
特殊的正无穷大值,在溢出时返回该值。
数字.原型 – Number.prototype
数字(Number) 对象上允许的额外属性。
方法
数字.是非数() – Number.isNaN()
确定传递的值是否是 NaN。
数字.是无穷() – Number.isFinite()
确定传递的值类型及本身是否是有限数。
数字.是整数() – Number.isInteger()
确定传递的值类型是“number”,且是整数。
数字.是安全整数() – Number.isSafeInteger()
确定传递的值是否为安全整数 ( –(253 - 1)
至 253 - 1之间
)。数字.转整数() – 数字.分析浮点数() – Number.toInteger()
计算传递的值并将其转换为整数 (或无穷大)。Number.parseFloat()
和全局对象 parseFloat()
一样。
数字.分析整数() – Number.parseInt()
和全局对象 parseInt()
一样。
Number
实例
所有 Number
实例都继承自 Number.prototype
。被修改的 Number
构造器的原型对象对全部 Number
实例都生效。
方法
示例
使用 Number 对象给数字变量赋值
下例使用 Number
对象的属性给几个数字变量赋值:
var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;
整数类型的范围
JavaScript 能够准确表示的整数范围在-2^53
到2^53
之间(不含两个端点),超过这个范围,无法精确表示这个整数。 (详情请参阅 ECMAScript standard, chapter 6.1.6 The Number Type):
var biggestInt = Number.MAX_SAFE_INTEGER;
//9007199254740991
var smallestInt = Number.MIN_SAFE_INTEGER;
//-9007199254740991
在解析序列化的JSON时,如果JSON解析器将它们强制转换为Number类型,那么超出此范围的整数值可能会被破坏。在工作中使用String
类型代替,是一个可行的解决方案。
使用 Number
转换 Date
对象
下例使用 Number 作为函数来转换 Date
对象为数字值:
var d = new Date("December 17, 1995 03:24:00");
print(Number(d));
这将输出 “819199440000”。
转换数字字符串为数字
Number('123') // 123
Number('12.3') // 12.3
Number('12.00') // 12
Number('123e-1') // 12.3
Number('') // 0
Number(null) // 0
Number('0x11') // 17
Number('0b11') // 3
Number('0o11') // 9
Number('foo') // NaN
Number('100a') // NaN
Number('-Infinity') //-Infinity