Number类型
一、相关概念
1.定义
Number
是与数字值对应的应用类型
- 创建
Number
对象,可以在调用Number
构造函数时向其中传递相应的数值
Number
类型也重写了valueOf()
、toLocaleString()
和toString()
方法。重写后的valueOf()
方法返回对象表示的基本类型的值,另外两个方法则返回字符串形式的数值。
- 可以为
toString()
方法传递一个表示基数的参数,告诉它返回几进制数值的字符串形式
var nnumberObject=new Number(10);
var num=10;
alert(num.toString());//"10"
alert(num.toString(2));//"1010"
alert(num.toString(8));//"12"
alert(num.toString(10));//"10"
alert(num.toString(16));//"a"
二、格式化数值方法
1.toFixed()
toFixed()
方法会按照指定的小数位返回数值的字符串表示
- 如果数值本身包含的小数位比指定的还多,那么接近指定的最大小数位的值就会舍入
- 能够自动舍入的特性,使得
toFixed()
方法很适合处理货币值
- 不同的浏览器给这个方法设定的舍入规则可能会有所不同。在给
toFixed()
传入0的情况下,IE 8及之前版本不能正确舍入范围在{(-0.94,-0.5],[0.5,0.94)}之间的值。对于这个范围内的值,IE会返回0,而不是-1或1;其他浏览器都能返回正确的值。IE 9修复了这个问题
var num=10;
alert(num.toFixed(2));
var num=10.005;
alert(num.toFixed(2));
2.toExponential()
toExponential()
方法返回以指数表示法(也称e
表示法)表示的数值的字符串形式
toExponential()
也接受一个参数,而且该参数同样也是指定输出结果中的小数位数
var num=10;
alert(num.toExponential(1));
3.toPrecision()
toPrecision()
方法可以以合适的格式表示某个数值的最合适格式
- 对于一个数值来说,
toPrecision()
方法可能会返回固定大小(fixed
)格式,也可能返回指数格式;具体规则看哪种格式符合
- 这个方法接受一个参数,即表示数值的所有数字的位数(不包括指数部分)
toPrecision()
会根据要处理的数值决定到底是调用toFixed()
还是调用toExponential()
,而这三个方法都可以通过向上或向下舍入,做到以最准确的形式表示带有正确小数位的值
var num=99;
alert(num.toPrecision(1));//"1e+2"
alert(num.toPrecision(2));//"99"
alert(num.toPrecision(3));//"99.0"
三、补充
- 不建议直接实例化
Number
类型,原因与显示创建Boolean对象一样
- 在使用
typeof
和instanceof
操作符测试基本类型数值与引用类型数值时,得到的结果完全不同
- 在使用
typeof
操作符测试基本类型数值时,始终会返回”number
“,而在测试Number
对象时,则会返回”Object
”
Number
对象是Number
类型的实例,而基本类型的数值则不是
var numberObject=new Number(10);
var numberValue=10;
alert(typeof numberObject);
alert(typeof numberValue);
alert(numberObject instanceof Number);
alert(numberObject instanceof Number);