zoukankan      html  css  js  c++  java
  • Number(),parseInt(),parseFloat(),Math.round(),Math.floor(),Math.ceil()对比横评

    首先,这些处理方法可分为三类。

    1,只用来处理数字取整问题的:Math.round(),Math.floor(),Math.ceil();

    2,专门用于把字符串转化成数值:parseInt(),parseFloat();

    3,  没有什么卵用的:Number()

    下面看看他们各自的用法和区别,逐个分类说。

    一,parseInt()

    parseInt()函数可以将字符串转换成一个整数,parseInt()函数不仅可以解析纯数字字符串,也可以解析以数字开头的部分数字字符串(非数字部分字符串在转换过程中会被去除)。也可以对纯数字作处理,不过意义不大,作用是返回舍去参数的小数部分后的整数。

    (1)如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN; 也就是说,用parseInt()转换空字符串会返回NaN。 
    (2)如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。 
    (3)如果字符串以”0x”开头且后跟数字字符,就会将其当作一个十六进制整数。 
    (4)如果字符串以”0”开头且后跟数字字符,就会将其当作一个八进制整数。 
    (5)parseInt()函数增加了第二参数用于指定转换时使用的基数(即多少进制)。 
    (6)当parseInt()函数所解析的是浮点数字符串时,取整操作所使用的方法为“向下取整”。

    (7)当其解析一个纯数字时,返回直接去掉小数点后部分的整数。

    var num1=parseInt("num123");    //NaN
    var num2=parseInt("");          //NaN
    var num3=parseInt("123.45")     //123
    var num4=parseInt("101010",2)   //42
    var num5=parseInt("123num")     //123
    var num6=parseInt("0xff")       //255
    var num7=parseInt(8.4) //8

    二,parseFloat()

    与parseInt()一样,parseFloat()也可以解析以数字开头的部分数字字符串(非数字部分字符串在转换过程中会被去除)。与parseInt()不同的是,parseFloat()可以将字符串转换成浮点数;但同时,parseFloat()只接受一个参数,且仅能处理10进制字符串。 
    (1)字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。 
    (2)如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后面都是零),parseFloat()会返回整数。

    (3)也可以处理一个纯数字,不过意义不大,直接返回数字本身。

    var num1=parseFloat("1234blue");    //1234
    
    var num2=parseFloat("0xA");         //0
    
    var num3=parseFloat("0908.5");      //908.5
    
    var num4=parseFloat("3.125e7");     //31250000
    
    var num5=parseFloat("123.45.67")    //123.45
    
    var num6=parseFloat("")             //NaN
    
    var num7=parseFloat("num123")       //NaN

    var num8=parseFloat(8.3) //8.3

    var num9=parseFloat(9) //9
    
    

    三,Math.round()

    作用:四舍五入,需要注意的是数字为负数时,绝对值需要>5才能“入”,而数字为正数是,>=5都可以“入”。

    Math.round(5.51)  //返回6
    
    Math.round(2.4)   //返回2
    
    Math.round(-1.4)  //返回-1
    
    Math.round(-1.5)  //返回-1
    
    Math.round(-1.51)  //返回-2,这个是特殊情况
    
    Math.round(-5.8)  //返回-6

    四,Math.floor()

    作用:返回贴地板整数,正数和负数不一样,但都是往实际大小的小那个方向取

    Math.floor(5.57)  //返回5
    
    Math.floor(2.4)  //返回2
    
    Math.floor(-1.5)  //返回-2
    
    Math.floor(-5.8)  //返回-6

    五,Math.ceil()

    作用,返回天花板整数,正数和负数不一样,但都是往实际大小的大那个方向取

    Math.ceil(5.57)  //返回6
    
    Math.ceil(2.4)  //返回3
    
    Math.ceil(-1.5)  //返回-1
    
    Math.ceil(-5.8)  //返回-5

    六,Number()

     作用:用于把任何类型转为数值。具体如下:

    (1)如果是Boolean值,true和false将分别转换为1和0。 
    (2)如果是数字值,只是简单的传入和返回。 
    (3)如果是null值,返回0。 
    (4)如果是undefined,返回NaN。 
    (5)如果是字符串,遵循下列规则: 
    如果字符串截去开头和结尾的空白字符后,不是纯数字字符串,那么最终返回结果为NaN。 
    如果是字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即“1”变成1,“123”会变成123,而“011”会变成11(前导的零被忽略了); 
    如果字符串中包含有效的浮点格式,如“1.1”,则将其转换为对应的浮点数值(同样也会忽略前导零); 
    如果字符串中包含有效的十六进制格式,例如”0xf”,则将其他转换为相同大小的十进制整数值; 
    如果字符串是空的(不包含任何字符),则将其转换为0; 
    如果字符串中包含除上述格式之外的字符,则将其他转换成NaN. 
    (6)如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用的对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。

    var num1=Number("Hello World");  //NaN
    
    var num2=Number("");             //0
    
    var num3=Number("000011");       //11
    
    var num4=Number(true);           //1
    
    var num5=Number("num123")       //NaN
  • 相关阅读:
    转载:SqlServer数据库性能优化详解
    复杂事件处理技术概览(一)
    Netty : writeAndFlush的线程安全及并发问题
    如何在RCP程序中添加一个banner栏
    AChecker + Selenium2对需要登录的页面进行自动化可访问性测试
    5分钟开启Esper之旅
    使SWT/JFace支持跨平台
    Ubuntu上Docker安装Trouble Shooting
    使Docker Container支持运行SWT程序
    Xcode5中如何切换Storyboards为xib
  • 原文地址:https://www.cnblogs.com/zhangnan35/p/9208899.html
Copyright © 2011-2022 走看看