Number是与数字对应的引用类型。要创建Number对象,可以在调用Number构造函数时向其中传递相应的数值。例如:

var numberObject=new Number(10);

  与Boolean类型一样,Number类型也重写了valueof()、toLocaleString()和toString()方法。重写后的valueof()方法返回对象的基本类型的数值。另外两个方法则返回字符串形式的数值。例如:

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"

  处理继承的方法之外,Number类型还提供了一些用于将数值格式化为字符串的方法。

  其中,toFixed()方法会按照指定的小数位返回数值的字符串表示,例如:

var num=10;
alert(num.toFixed(2));//"10.00"

  这里给toFixed()方法传入了数值2,意思是显示几位小数。于是,这个方法返回了“10.00”,即以0填补了必要的小数位。如果数值本身包含的小数位比指定的还要多,那么接近指定的最大小数位的值就会舍入,例如:

var num = 10.005;
alert(num.toFixed(2));//"10.01"

  能够自动舍入的特性,使得toFixed()方法很适合处理货币值。但需要注意的是,不同浏览器给这个方法设定的舍入规则可能会有所不同。在给toFixed()传入0的情况下,IE8及之前的版本不能正确舍入范围在{(-0.94,-0.5],[0.5,0.94)}之间的值。对于这个范围内的值,IE会返回0,而不是-1或1;其他浏览器都能返回正确的值。IE9修复了这个问题。

  注:toFixed()方法可以表示带有0到20个小数位的数值。但这只是标准实现的范围,有些浏览器也可能支持更多位数。

  另外可用于格式化数值的方法是toExponential(),该方法返回以指数表示法(也成e表示法)表示的数值的字符串形式。与toFixed()一样,toExponential()也接收一个参数,而且该参数同样也是指定输出结果中的小数位数。例如:

var num = 10;
alert(num.toExponential(1));//"1.0e+1"

  以上代码输出了“1.0e+1”;不过,这么小的数值一般不必用e表示法。如果你想得到表示某个数值的最合适的格式,就应该使用toPrecision()方法。

  对于一个数值来书,toPrecision()方法可能会返回固定大小(fixed)格式,也可能返回指数(exponential)格式;具体规则是看哪种格式最合适。这个方法接收一个参数,即表示数值的所有数字的位数(不包含指数部分)。例如:  

var num=99;
alert(num.toPrecision(1));//"1e+2"
alert(num.toPrecision(2));//"99"
alert(num.toPrecision(3));//"99.0"

  以上代码首先完成是以一位数来表示99,结果是“1e+2”,即100。因为一位数无法准确的表示99,因此toPrecision()就将它向上舍入为100,这样就可以使用一位数来表示它了。而接下来用两位数表示99,当然就是“99”。最后使用三位数表示99时,toPrecision()方法返回了“99.0”。

  实际上,toPrecision()会根据要处理的数值决定到底是调用toFixed()还是调用toExponential()。而这三个方法都可以通过向上或向下舍入,做到以最准确的形式来表示带有正确的小数位的值。

  注:toPrecision()方法可以表现1到21位小数。某些浏览器支持的范围更大,但这是典型实现的范围。

  与Boolean对象相似,Number对象也以后台方式为数值提供了重要的功能。但与此同时,我们仍然不建议直接实例化Number类型,而原因与显式创建Boolean对象一样。具体来讲,就是在使用typeof和instanceof操作符测试基本类型数值与引用类型数值时,得到的结果完全相同,例如:

var numberObject=new Number(10);
var numberValue=10;
alert(typeof numberObject);//"object"
alert(typeof numberValue);//"number"
alert(numberObject instanceof Number);//true
alert(numberValue instanceof Number);//false;

  在使用typeof操作符测试基本类型数值时,始终会返回number,而在测试Number对象时,则会返回object。类似的,Number对象时Number类型的实例,而基本类型的数值则不是。

5.6.2 Number类型的更多相关文章

  1. ORACLE NUMBER类型Scale为0引发的问题

    今天遇到了一个很有意思的NUMBER类型Scale引发的问题,我用一个简单的测试用例来展示一下这个案例.假如有个TEST的表,有个字段类型为NUMBER,我插入下面两条数据 CREATE TABLE ...

  2. javascript学习笔记2-typeof、Number类型、Boolean()

    1.typeof操作符 对一个值使用typeof操作符可能返回下列某个字符串 "undefined"——这个值未定义 "boolean"——这个值是布尔值 &q ...

  3. oracle中的number类型

    number 数据类型 number (precision,scale) a)    precision表示数字中的有效位,如果没有指定precision的话,oracle将使用38作为精度: b)  ...

  4. Date类型,Boolean类型,Number类型

    1.Date类型:  1)创建Date对象:    var date=new Date();  //Date对象会把当前日期和时间保存为其初始值 2)Date对象的方法:    --这些得到的都是数字 ...

  5. ORACLE 中NUMBER 类型 低精度转换成高精度

    例如: 表User中有一个字段 salary  Number(10,3), 如果想把字段salary的类型提高精度到salary  Number(10,6),保留六位小数, 解决办法:1,ALTER ...

  6. 给Number类型增加加法、减、乘、除函数,解决float相加结果精度错乱的问题

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  7. oracle中int类型和number类型区别

    INT类型是NUMBER类型的子类型.下面简要说明:(1)NUMBER(P,S)该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设定义SAL列为 ...

  8. Javascript数据类型——number类型

            ECMAScript规范中使用IEEE754格式来表示整数和浮点数.支持十进制.八进制以及十六进制.有一点注意的是八进制数字在严格模式下是无效的,这可能会影响到程序的正常运行. 避免浮 ...

  9. JavaScript 数值Number类型详解

    Number 问题 如果下面的问题你都能回答对了吗? 0.1 + 0.2 == 0.3 成立吗? .e-5 表示多少? 怎么表示8进制? 怎么转换进制? 如何将字符串转换成数值或整数?反过来呢?十六进 ...

随机推荐

  1. MySQL加强

    MySQL加强 Default Not null Unique Primary key Zerofill primary key auto_increment primary key auto_inc ...

  2. mysql 权限控制具体解释

    概述 mysql权限控制在不同的上下文和不同的操作水平上都能够进行控制,他们包括例如以下几个 ** 管理权限能够同意用户管理mysql server的操作. 这些权限控制是全局的,不是针对某个特定的数 ...

  3. LNMP : 502 Bad Gateway 解决小记,真正的原因

    站点搬迁到新的server.原先一直都是LAMP.如今改为LNMP. 将重写文件 htaccess改成 nginx的 conf.放到了站点.可仅仅能打开首页,其它重写页面一打开都是不停的载入. 载入等 ...

  4. Jade 报错

    今天写jade的时候遇到一个问题 Invalid indentation,you can use tabs or spaces but not both问题 经过查证原来是 在jade模板中 同时存在 ...

  5. 在Prefetcher中取消robots.txt的限制

    Robots.txt是一种专门用于搜索引擎网络爬虫的文件,当构造一个网站时,如果作者希望该网站的内容被搜索引擎收录,就可以在网站中创建一个纯文本文件robots.txt,在这个文件中,声明该网站不想被 ...

  6. poj3162 Walking Race

    题目大意:给一个树形图n个点(n-1条边),XXX要练习竞走,每次选定一个点k作为开始点,每次走从k开始能走的最长的一条路径(不要重边).要求出最长的连续的这样的k,假设连续有kx个,前提:这样kx条 ...

  7. VC++学习之VC中常见问题

    VC++学习之VC中常见问题 (1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW中显示了 ( ...

  8. R与数据分析旧笔记(⑨)广义线性回归模型

    广义线性回归模型 广义线性回归模型 例题1 R.Norell实验 为研究高压电线对牲畜的影响,R.Norell研究小的电流对农场动物的影响.他在实验中,选择了7头,6种电击强度, 0,1,2,3,4, ...

  9. vb.net 操作xml

    xml文件: <?xml version="1.0" encoding="gb2312"?> <bookstore> <book ...

  10. LRU算法的设计

    一道LeetCode OJ上的题目,要求设计一个LRU(Least Recently Used)算法,题目描述如下: Design and implement a data structure for ...