Javascript使用IEEE -754格式存储整型和浮点型(有些语言称为双精度)
因为这种存储格式,所以javascript中有正的0和负的0
 
整型也可以存储八进制和十六制
 
八进制第一个数为0,后面跟着的数如果大于八,会自动转化为十进制
078  将会被解释为78
在strict mode里面八进制是不合法的,会出现异常
 
16进制以0x开头
在算法里面八进制和十六进制都会被当作十进制处理
 
浮点型(小数)的存储内存是整型的两倍,所以javascript总是试图把浮点型转为整型
1.0会被转为整型1, 1.忘记加后面的数字也会被转为1
 
要表示很大的类型可以使用e(E)符号,表示10的次方
3.125e7    表示31250000
 
可以表示很小的数 3e-7代表0.00000003,javascript会自动把小数点后有六个或以上0的小数都转化为e格式
 
Floating-point values are accurate up to 17 decimal places but are far less accurate in arithmetic computations than whole numbers.
例如0.1+0.2=0.30000000000000004
0.05+0.25=0.3
0.15+0.15=0.3这样又是正常的
这并不是ecmascript才有的错误,只要采用IEEE-754存储都会有这样问题
 
因为内存限制,数字大小是有范围的
最小的Number.MIN_VALUE and is 5e-324 on most browsers
最大的Number.MAX_VALUE and is 1.7976931348623157e+308 on most browsers
如果超出了这个范围小的转化为-infinity,大于最大值的为infinity
 
在其他语言中除以0会抛出异常,在ecmascript会得到NaN,这样程序会继续运行下去
用isNAN()判断时会尝试把传进去的参数转化为数字判断
alert(isNaN(“blue”));   输出true
alert(isNaN(true));输出false
 
有三个函数可以把非数字内容转化为数字
Number()
- ➤  When applied to Boolean values, true and false get converted into 1 and 0, respectively.
- ➤  When applied to numbers, the value is simply passed through and returned.
 
- ➤  When applied to null, Number() returns 0.
 
- ➤  When applied to undefined, Number() returns NaN.
 
- ➤  When applied to strings, the following rules are applied:
 
    - ➤  If the string contains only numbers, optionally preceded by a plus or minus sign, it is always converted to a decimal number, so “1” becomes 1, “123” becomes 123, and “011” becomes 11 (note: leading zeros are ignored).
 
    - ➤  If the string contains a valid floating-point format, such as “1.1”, it is converted into the appropriate floating-point numeric value (once again, leading zeros are ignored).
 
    - ➤  If the string contains a valid hexadecimal format, such as “0xf”, it is converted into an integer that matches the hexadecimal value.
 
    - ➤  If the string is empty (contains no characters), it is converted to 0.
 
    - ➤  If the string contains anything other than these previous formats, it is converted into NaN.
 
- ➤  When applied to objects, the valueOf() method is called and the returned value is converted based on the previously described rules. If that conversion results in NaN, the toString() method is called and the rules for converting strings are applied.
 
parseInt()从第一个字符开始转化,忽略开头的空格,直到遇到非数字或到结尾停止,如果符合十六进制语法的会转化为十六进制
 
var num1 = parseInt(“1234blue”);  结果为1234
var num2 = parseInt(“”);     结果为NaN,和Number()不同
var num3 = parseInt(“0xA”);   十六进制 10
var num4 = parseInt(22.5);    22
var num5 = parseInt(“70”);     70
 
在ECMAScript 3 and 5该函数有区别
var num = parseInt(“070”);       //56 (octal) in ECMAScript 3, 0 (decimal) in ECMAScript 5
在第五版中,解析八进制的能力从引擎移除了,所以0开头被认为是无效的,返回0
因此使用时最好添加radix
var num1 = parseInt(”AF”, 16); //175
var num2 = parseInt(”AF”); //NaN
 
parseFloat()是没有基数可以添加的,因此0开头的话都会转化为0,如果是E的字符,能够转化为整型
 
parseFloat(“3.125e7”);      转化为31250000

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. 5.6.2 Number类型

    Number是与数字对应的引用类型.要创建Number对象,可以在调用Number构造函数时向其中传递相应的数值.例如: var numberObject=new Number(10); 与Boole ...

  10. JavaScript 数值Number类型详解

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

随机推荐

  1. S2_SQL_第四章

    1.使用EXISTS语句判断该数据库对象是否存在的语法: DROP TABLE IF EXISTS temp; 2. EXISTS作为WHERE语句的子查询: SELECT <字段>FRO ...

  2. 安装CentOS7精简版后的配置工作

    CentOS7完整版有7.7G,太大了下载起来比较费劲,还是下载了精简版,但是精简版安装以后很多命令都没有,还要动手配yum源,按需安装 国内的yum源比较好的就是163的了,配置方法: 1,进入yu ...

  3. 和团队齐头并进——敏捷软件开发的Scrum的学习

    敏捷开发的介绍 概念 更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也 ...

  4. windows mysql 操作实践

    1.通过navicat for mysql 进行数据库表的输入操作. 2.使用mySQL shell进行查询. 3. 显示数据表中的所有列的名称  show colums from user 4. 进 ...

  5. 笨鸟先飞之ASP.NET MVC系列之过滤器(03动作过滤器过滤器)

    概念介绍 动作过滤器应该是我们平常工作中需要用到最多的过滤器了,动作过滤器,主要在我们的动作方法执行前后执行. 如果我们需要创建动作过滤器需要实现IActionFilter接口. 我们看到该接口里有两 ...

  6. ActiveMQ——activemq的详细说明,queue、topic的区别(精选)

    JMS中定义了两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic).主要区别就是是否能重复消费. 点对点:Queue,不可重 ...

  7. 一款低延迟的分布式数据库同步系统--databus

    每次看到马路对面摩托罗拉的大牌子,都想起谷歌125亿美元收购摩托罗拉移动,后来又以29亿美元卖给联想的事情.谷歌所做的决策都比较考虑长远利益,在这串交易中,谷歌获得了摩托罗拉最有价值的几千项专利,稳健 ...

  8. win10 uwp 获得元素绝对坐标

    有时候需要获得一个元素,相对窗口的坐标,在修改他的位置可以使用. 那么 UWP 如何获得元素坐标? 我提供了一个方法,可以获得元素的坐标. 首先需要获得元素,如果没有获得元素,那么如何得到他的坐标? ...

  9. windows中vim-airline研究笔记

    vim-airline网上的介绍与安装教程一大堆,我就不累述了 但是,在win下如何让airline插件正常显示箭头等特殊字符着实让我头疼了不少. 最初,我是用的monaco字体 但正如你所见,并没有 ...

  10. WordPress 4.8 安装配置教程 (基于 centos 7.3, php 7.0, mysql 5.7.19, nginx 1.12.1)

    最近想要整个 blog,记录自己工作.学习中的点滴.Wordpress 自然是首选,因为内容才是关键,所以也就不怕别人说太 low.网上大部份都是讲 wordpress 配合 apache 的安装教程 ...