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. Flip Game poj 1753

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29731   Accepted: 12886 Descr ...

  2. Long Long Message (poj2774 后缀数组求最长公共子串)

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 19206   Accepted: 79 ...

  3. java中集合的增删改操作及遍历总结

      集合的增删改操作及遍历总结

  4. 图解clientWidth,offsetWidth,scrollWidth,scrollTop

    新手看到这几个属性,很头疼,参考了网上一些文章,加上自己实践,给出对这几个属性的解释 我把代码贴上来,方便大家验证 在chrome浏览器中,不知为什么图片容器高度比图片高度多了4px,把图片设置为bl ...

  5. Jquery实现鼠标移到某个对象,弹出显示层。

    /** * 鼠标移上去显示层 * @param divId 显示的层ID * @returns */ $.fn.myHoverTip = function(divId) { var div = $(& ...

  6. Struts2 02--通配符

       在以前没有使用Struts时,web与前台的数据交互通过Servlet+jsp页面.一个增删改查往往需要写四个Servlet来处理数据:在使用struts之后,Servlet不再被使用,而是通过 ...

  7. Python和SQL Server 2017的强大功能

    Python和SQL Server 2017的强大功能 摘要: 源:https://www.red-gate.com/simple-talk/sql/sql-development/power-pyt ...

  8. CoreCLR源码探索(七) JIT的工作原理(入门篇)

    很多C#的初学者都会有这么一个疑问, .Net程序代码是如何被机器加载执行的? 最简单的解答是, C#会通过编译器(CodeDom, Roslyn)编译成IL代码, 然后CLR(.Net Framew ...

  9. Java 内存模型- Java Memory Model

    多线程越来越多的使用,使得我们需要对它的深入理解.那么就涉及到了Java内存模型JMM.JMM是JVM的一部分,JMM定义了一个线程修改了一个共享变量,其他线程什么时候或者如何看到这个变量,如何去访问 ...

  10. win10 uwp 读取文本GBK错误

    本文讲的是解决UWP文本GBK打开乱码错误,如何去读取GBK,包括网页GBK.最后本文给出一个方法追加文本. 我使用NotePad记事本保存文件,格式ASCII,用微软示例打开文件方式读取,出现错误 ...