在上一章中,我们已经学习了数字的基础知识,让我们前进一步,开始考虑可以使用内置方法和属性对数字执行哪些有用的操作。
原始值,例如(25或3.14),不能具有属性或方法(因为它们不是对象)。
但是在JavaScript中,方法和属性也可用于原始值,因为JavaScript在执行方法和属性时会将原始值视为对象。
toExponential()方法
toExponential()方法返回以数字表示的数字字符串。
此方法采用一个可选参数,该参数定义小数点后的字符数。
var num = 12.5;
num.toExponential(); // 返回 1.25e+1
num.toExponential(2); // 返回 1.25e+1
num.toExponential(4); // 返回 1.2500e+1
num.toExponential(6); // 返回 1.250000e+1
注意:指数符号可用于表示数量级非常大或非常小的数字。例如,95700000000可以写为957e8或957e + 8。
toFixed()方法
toFixed()方法使用定点表示法格式化数字。
此方法返回的值是一个字符串,并且在小数点后有确切指定的位数。
var num = 12.525;
num.toFixed(); // 返回 13
num.toFixed(2); // 返回 12.53
num.toFixed(4); // 返回 12.5250
num.toFixed(6); // 返回 12.525000
如果需要,数字会四舍五入,如果需要,小数部分将用零填充,以便具有指定的长度。
toPrecision()方法
toPrecision()方法返回一个字符串,该数字表示指定精度的数字。
此方法返回的值是一个字符串,并且在小数点后有确切指定的位数。
var num = 5.123456;
num.toPrecision();// 5.123456
num.toPrecision(1); // 5
num.toPrecision(2); // 5.1
num.toPrecision(3); // 5.12
num.toPrecision(4); // 5.123
num.toPrecision(10); // 5.123456000
toString()方法
toString()方法返回一个表示指定数字的字符串。
var num = 255;
num.toString(); // 返回 "255" 作为字符串
该toString()方法可以选择接受2到36范围内的整数参数,该整数参数指定用于表示数值的基数。
var num = 255;
num.toString(10); // 返回 "255"
num.toString(16); // 返回 "ff"
num.toString(8); // 返回 "377"
num.toString(2); // 返回 "11111111"
另外,我们可以在括号内放置一个值,而不是一个变量。
(9048).toString();// 返回 "9048"
(false).toString(); // 返回 "false"
(50 + 20).toString(); // 返回 "70"
valueOf()方法
valueOf()方法返回数字的原始值。
var x = new Number(50);
typeof x.valueOf(); // 返回数字(而不是对象)
在JavaScript中,数字可以是原始值或对象。
该valueOf()方法在JavaScript中用于将Number对象转换为原始值。
将变量转换为数字
有3个JavaScript 全局函数可用于将变量转换为数字:
-
Number()函数
-
parseInt()函数
-
parseFloat()函数
Number()函数
Number()函数将给定的参数转换为数字。
如果该值不能转换为数字,则返回NaN。
Number(true); // 返回 1
Number(false); // 返回 0
Number("100"); // 返回 100
Number("2 + 6");// 返回 NaN
Number("2 6"); // 返回 NaN
Number("Parrot"); // 返回 NaN
如果参数是Date对象,则该Number()函数返回自UTC 1970年1月1日以来的毫秒数。
Number(new Date());
parseInt()函数
该parseInt()函数解析一个字符串,并返回一个整数。
当您处理CSS单位等值(例如15px,4em等)并且要从中提取数值时,此功能很有用。
parseInt("12"); // 返回 12
parseInt("12.25");// 返回 12
parseInt("15px"); // 返回 15
parseInt("4 days"); // 返回 4
parseInt("Day 4");// 返回 NaN
parseInt("36 24 36"); // 返回 36
parseInt(" 20 "); // 返回 20
如果第一个字符不能转换为数字,则返回NaN。
该parseInt()函数可选地接受一个整数参数,该整数参数用于指定要使用的数字系统,例如,基数16(十六进制)表示应将字符串中的数字从十六进制数字解析为十进制数字。
parseInt("FF", 16);// 返回 255
parseInt("1111", 2); // 返回 15
parseFloat()函数
parseFloat()函数解析一个字符串,并返回一个浮点数。
parseFloat("12.25"); // 返回 12.25
parseFloat("5.6em"); // 返回 5.6
parseFloat("80.5 kg");// 返回 80.5
parseFloat("weight 80.5 kg"); // 返回 NaN
如果第一个字符不能转换为数字,则返回NaN。
JavaScript 数字属性
下表列出了Number对象的属性:
属性 | 描述 |
---|---|
MAX_VALUE | 返回JavaScript中可能的最大数字 |
MIN_VALUE | 返回JavaScript中可能的最小数字 |
NEGATIVE_INFINITY | 表示负无穷大(溢出时返回) |
POSITIVE_INFINITY | 表示无穷大(溢出时返回) |
NaN | 代表“非数字”值 |
注意:Number的所有属性都是静态的,您始终将其用作Number.property,而不是作为您创建的Number对象的属性。
JavaScript MIN_VALUE和MAX_VALUE
该MAX_VALUE属性表示JavaScript中可表示的最大数值。
Number.MAX_VALUE;
该MIN_VALUE属性表示JavaScript中可表示的最小正数值。
Number.MIN_VALUE;
JavaScript POSITIVE_INFINITY和NEGATIVE_INFINITY
该NEGATIVE_INFINITY属性表示负的Infinity值。
Number.NEGATIVE_INFINITY;
NEGATIVE_INFINITY 溢出返回:
var num = -5 / 0;
该POSITIVE_INFINITY属性表示正的Infinity值。
Number.POSITIVE_INFINITY;
POSITIVE_INFINITY 溢出返回:
var num = 5 / 0;
JavaScript NaN-不是数字
该NaN属性是一个表示非法的值。
例如,如果您尝试将数字与字符串相乘,则返回的值为“ NaN”。
var ans = 10 * 'Hello';
document.getElementById('result').innerHTML = ans;
数字属性是静态的
数字属性是静态的,您始终将其用作Number.property,而不是作为您创建的Number对象的属性。
例如,在您创建的对象(而不是Number本身)上调用MAX_VALUE将导致未定义的值:
var num = 20;
num.MAX_VALUE;// undefined