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. PHP浮点型(float)转换为整形(int)/round()保留小数点后几位

    round(x,y); x:需要转换的变量 y:保留几位小数 <?php echo round(3.112312321) //输出3 echo round(3.112312321,3) //输出 ...

  2. vue数组语法兼容问题

    先来一行代码: <a :href="['NewsNote.asp?ID='+item.ID+'&MenuType=C']" v-text="item.Tit ...

  3. 在前端页面对easyui中的datagrid与jqgrid加载后的数据进行操作

    因为项目的需求,需要在grid中加载数据后再在前端页面执行操作,所以在easyui中的grid与jqgrid都进行了测试和操作: eayui中grid数据的操作: //构造集合对象 var list ...

  4. vuejs2+axios设置

    http://www.cnblogs.com/wisewrong/p/6402183.html 1 当前项目安装axios $ cnpm i axios --save-dev 2 import axi ...

  5. Python系列之lambda、函数、序列化

    lambda 在python中使用lambda来创建匿名函数,而用def创建的方法是有名称的,除了从表面上的方法名不一样外,python lambda还有哪些和def不一样呢? 1 python la ...

  6. Oracle 定时查询数据插入新表中(job+存储过程)

    create table EGMAS_COUNT_DATA(TIMES       date not null, COUNT NUMBER(30) not null, SYSTEM_NAME VARC ...

  7. c# 【MVC】WebApi通过HttpClient来调用Web Api接口

    /// <summary> /// HttpClient实现Post请求(异步) /// </summary> static async void dooPost() { st ...

  8. asp.net(C#)利用QRCode生成二维码

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="QRCode.aspx.cs&q ...

  9. SqlServer和Oracle中一些常用的sql语句8 触发器和事务

    --创建和执行事后触发器 --更新仓库备份表中记录时自动创建数据表且插入三条记录 create trigger db_trigger1 on 仓库备份 for update as begin if E ...

  10. Linux系统初始化过程及运行级别简介

    Linux开机过程: 1 开机自检(BIOS):初始化硬件,查找启动介质 2 MBR引导 3 GRUB引导菜单:GRUB程序安装在Bootloader 4 加载内核(kernel) 5 运行INIT进 ...