在 JavaScript 里面,数字均为双精度浮点类型。
除了能够表示浮点数,数字类型也还能表示三种符号值: +Infinity(正无穷)、-Infinity(负无穷)和 NaN (not-a-number,非数字)。
JavaScript 最近添加了 BigInt 的支持,能够用于表示极大的数字。使用 BigInt 的时候有一些注意事项
例如,不能让 BigInt 和 Number 直接进行运算,也不能用 Math 对象去操作 BigInt 数字。
四种数字进制:十进制,二进制,八进制和十六进制。
1234567890;
42;
// 以零开头的数字的注意事项:
0888; // 888 将被当做十进制处理
0777; // 在非严格格式下会被当做八进制处理 (用十进制表示就是511)
十进制可以以 0 开头,后面接其他十进制数字,但是假如下一个接的十进制数字小于 8,那么该数字将会被当做八进制处理。
二进制数字语法是以零为开头,后面接一个小写或大写的拉丁文字母 B(0b 或者是 0B)。
var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
var FLT_MANTISSA = 0b00000000011111111111111111111111; // 8388607
八进制数字语法是以 0 为开头的。假如 0 后面的数字不在 0 到 7 的范围内,该数字将会被转换成十进制数字。
var n = 0755; // 493
var m = 0644; // 420
在 ECMAScript 5 严格模式下禁止使用八进制语法。八进制语法并不是 ECMAScript 5 规范的一部分,但是通过在八进制数字添加一个前缀 0 就可以被所有的浏览器支持:0644 === 420 而且 “\045” === “%”。在 ECMAScript 6 中使用八进制数字是需要给一个数字添加前缀“0o”。
var a = 0o10; // ES6 :八进制
十六进制数字语法是以零为开头,后面接一个小写或大写的拉丁文字母 X(0x 或者是 0X)。
0xfffffffffffffffff; // 295147905179352830000
0x123456789abcdef; // 81985529216486900
0xa; // 10
1e3; // 1000
2e6; // 2000000
0.1e2; // 10
内置的 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;
部分属性
| 属性 | 描述 |
|---|---|
| Number.MAX_VALUE | 可表示的最大值 |
| Number.MIN_VALUE | 可表示的最小值 |
| Number.NaN | 特指”非数字“ |
| Number.NEGATIVE_INFINITY | 特指“负无穷”;在溢出时返回 |
| Number.POSITIVE_INFINITY | 特指“正无穷”;在溢出时返回 |
| Number.EPSILON | 表示 1 和比最接近 1 且大于 1 的最小 Number 之间的差别 |
| Number.MIN_SAFE_INTEGER | JavaScript 最小安全整数. |
| Number.MAX_SAFE_INTEGER | JavaScript 最大安全整数. |
部分方法
| 方法 | 描述 |
|---|---|
| Number.parseFloat() | 把字符串参数解析成浮点数,和全局方法 parseFloat() 作用一致. |
| Number.parseInt() | 把字符串解析成特定基数对应的整型数字,和全局方法 parseInt() 作用一致. |
| Number.isFinite() | 判断传递的值是否为有限数字。 |
| Number.isInteger() | 判断传递的值是否为整数。 |
| Number.isNaN() | 判断传递的值是否为 NaN. More robust version of the original global isNaN(). |
| Number.isSafeInteger() | 判断传递的值是否为安全整数。 |
数字类型原型上的方法
toExponential() 返回一个数字的指数形式的字符串,形如:1.23e+2
toFixed() 返回指定小数位数的表示形式,
var a = 123,
b = a.toFixed(2); //b="123.00"
toPrecision() 返回一个指定精度的数字。如下例子中,a=123 中,3 会由于精度限制消失
var a = 123,
b = a.toPrecision(2); //b="1.2e+2"
对于内置的 Math 数学常项和函数也有一些属性和方法。 比方说, Math 对象的 PI 属性会有属性值 pi (3.141…),你可以像这样调用它:
Math.PI; // π
同理,标准数学函数也是 Math 的方法。 这些包括三角函数 ,对数,指数,和其他函数。比方说你想使用三角函数 sin, 你可以这么写:
Math.sin(1.56);
还有一堆方法…
绝对值、三角函数(参数为弧度制)、反三角函数(参数为弧度制)、双曲三角函数、反双曲三角函数、指数和对数函数、取整函数、随机数函数、平方立方、判断正负等…
JavaScript 没有日期数据类型。但是你可以在你的程序里使用 Date 对象和其方法来处理日期和时间。Date 对象有大量的设置、获取和操作日期的方法。 它并不含有任何属性。
JavaScript 处理日期数据类似于 Java。这两种语言有许多一样的处理日期的方法,也都是以 1970 年 1 月 1 日 00:00:00 以来的毫秒数来储存数据类型的。
Date 对象的范围是相对距离 UTC 1970 年 1 月 1 日 的前后 100,000,000 天。
var dateObjectName = new Date([parameters]);
参数可以为以下中任何一种:
处理日期时间的 Date 对象方法可分为以下几类:
getDay 方法可以返回星期
getMonth()
getFullYear()
var today = new Date();
var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // 设置日和月,注意,月份是0-11
endYear.setFullYear(today.getFullYear()); // 把年设置为今年
var msPerDay = 24 * 60 * 60 * 1000; // 每天的毫秒数
var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
var daysLeft = Math.round(daysLeft); //返回今年剩下的天数
这个例子中,创建了一个包含今天的日期的 Date 对象,并命名为 today,然后创建了一个名为 endYear 的 Date 对象,并把年份设置为当前年份,接着使用 today 和 endYear 的 getTime 分别获取今天和年底的毫秒数,再根据每一天的毫秒数,计算出了今天到年底的天数,最后四舍五入得到今年剩下的天数。
parse 方法对于从日期字符串赋值给现有的 Date 对象很有用,例如:以下代码使用 parse 和 setTime 分配了一个日期值给 IPOdate 对象:
var IPOdate = new Date();
IPOdate.setTime(Date.parse('Aug 9, 1995'));
评论0