JavaScript 数值始终是 64 位的浮点数
与许多其他编程语言不同,JavaScript 不会定义不同类型的数,比如整数、短的、长的、浮点的等等。
JavaScript 数值始终以双精度浮点数来存储,此格式用 64 位存储数值,其中 0 到 51 存储数字(片段),52 到 62 存储指数,63 位存储符号。
科学计数法
超大或超小的数可通过科学计数法来写:
var x = 123e5; // 12300000
var y = 123e-5; // 0.00123
精度(重点)
1、整数(不使用指数或科学计数法)会被精确到 15 位。
var x = 999999999999999; // x 将是 999999999999999
var y = 9999999999999999; // y 将是 10000000000000000
2、小数的最大数是 17 位,但是浮点的算数并不总是 100% 精准:
var x = 0.2 + 0.1; // x 将是 0.30000000000000004
3、使用乘除法有助于解决上面的问题:
var x = (0.2 * 10 + 0.1 * 10) / 10; // x 将是 0.3
toFixed() 方法 (重点:保留小数位,返回字符串数字)
toFixed() 返回字符串值,它包含了指定位数小数的数字
toFixed(2) 非常适合处理金钱。
var x = 9.656;
var a = x.toFixed(0); // 返回 10
var b = x.toFixed(2); // 返回 9.66
var c = x.toFixed(4); // 返回 9.6560
var d = x.toFixed(6); // 返回 9.656000
console.log(a, b, c, d)
console.log(typeof x) //number
console.log(typeof a) //string
toPrecision() 方法 (重点:保留,返回字符串数字)
toPrecision() 返回字符串值,它包含了指定长度的数字:
var x = 9.656;
var a = x.toPrecision(); // 返回 9.656
var b = x.toPrecision(2); // 返回 9.7
var c = x.toPrecision(4); // 返回 9.656
var d = x.toPrecision(6); // 返回 9.65600
console.log(typeof a) //string
转化为数字的方法
如果无法转换为数值,则返回 NaN (Not a Number)。
1、Number() 可用于把 JavaScript 变量转换为数值:
x = true;
Number(x); // 返回 1
x = false;
Number(x); // 返回 0
x = new Date();
Number(x); // 返回 1404568027739
x = "10"
Number(x); // 返回 10
x = "10.11"
Number(x); // 返回 10.11
x = "10 20"
Number(x); // 返回 NaN
2、parseInt() 解析一段字符串并返回数值。允许空格。只返回首个数字,返回整数型。
parseInt("10"); // 返回 10
parseInt("10.33"); // 返回 10
parseInt("10 20 30"); // 返回 10
parseInt("10 years"); // 返回 10
parseInt("years 10"); // 返回 NaN
3、parseFloat() 解析一段字符串并返回数值。允许空格。只返回首个数字
parseFloat("10"); // 返回 10
parseFloat("10.33"); // 返回 10.33
parseFloat("10 20 30"); // 返回 10
parseFloat("10 years"); // 返回 10
parseFloat("years 10"); // 返回 NaN