js中只有一种数值类型,即number,包括"整数"和带小数的十进制数。js中其实是没有真正意义上的整数的,这个整数就是没有小数的十进制数。js使用的双精度格式。
数字值可以调用 Number.prototype
中的方法,比如toFixed()
方法可以用来指定小数部分显示的位数:
var a = 68.9527;
console.log(a.toFixed(0)); // 69
console.log(a.toFixed(1)); // 69.0
console.log(a.toFixed(2)); // 68.95
console.log(a.toFixed(3)); // 68.953
console.log(a.toFixed(4)); // 68.9527
console.log(a.toFixed(5)); // 68.95270
请注意,上例中的输出结果实际上是给定数字的字符串形式,如果指定的小数部分的显示位数多于实际位数就用0补齐。
js中的数字的呈现方式决定了整数的安全范围远小于Number.MAX_VALUE
。在ES6中定义了最大整数Number.MAX_SAFE_INTEGER
和最小整数Number.MIN_SAFE_INTEGER
,分别对应值9007199254740991
和-9007199254740991
。
当js需要处理一些比较大的数字时,比如数据库中的64位ID等,由于js的数字类型无法精确呈现64位数值,所以必须将它们保存(转换)为字符串。
一般这种情况比较少,如果是简单的比较操作,可以通过转换为字符串来实现,如果确实需要对大数值进行数学运算,则需要借助相关工具库。
检测一个数是否为整数,可以使用ES6中的Number.isInteger()
,ES5之前可以使用自定义方法:
//ES6
console.log(Number.isInteger(59)); // true
console.log(Number.isInteger(59.0)); // true
console.log(Number.isInteger(59.2)); // false
//ES5
if(!Number.isInteger){
var isInteger = function(num){
return typeof num === "number" && num % 1 === 0;
}
}
console.log(isInteger(10)); // true
console.log(isInteger(11.0)); // true
console.log(isInteger(11.5)); // false
下面来看下值的引用:
`null
、undefined
、字符串、数字、布尔和ES6中的symbol。引用类型值则总是通过引用复制的方式来赋值/传递的,包括数组、封装对象等。var a = 2;
var b = a; // b是a的值的一个副本,
b++;
console.log(a); // 2
console.log(b); // 3
var c = [1, 2, 3];
var d = c; // d是[1, 2, 3]的一个引用,c也是[1, 2, 3]的另一个引用,这两个引用互不相关
d.push(4);
console.log(c); // [1, 2, 3, 4]
console.log(d); // [1, 2, 3, 4]
另外还有两个特殊类型的值,null和undefined。null类型只有一个值null,undefined类型也只有一个值undefined。所有变量在赋值之前默认都是undefined。void运算符返回undefined。
-------------------------------- 热门文章 --------------------------------
设计模式>>>