• Number(),parseInt()和parseFloat


    一、Number()

      1.如果是传进去数字值,只进行传入和传出,前置为  0x  的数字 和 前置  为0且不包含数字8,9的数字  ,会被转为十进制,对于其他的数字来说通常没有变化。

      2.如果传进去Boolean,true和false会被转成1和0。

      3.传进去null或者undefined,会被转成0和NaN

      4.对于传进去字符串:

        a.如果字符串只包含数字,忽略前置的0,将其转换为  十进制  。

        b.带小数点的字符串,忽略前置的0,将其转换为对相应的  浮点数。

        c.十六进制的话,也会将其转换为十进制。如0xfff 会被转成4095.

        d.字符串如果是空的,或者只含有空格的字符串,会被转成0.

        e.如果字符串中含有非数字的字符,转成NaN。如 “10*10”算式也会转成NaN

      5.传进去的函数,数组,集合等对象,会先按照之前的规则转换返回值,如果是NaN,则再调用对象的toString,然后在依照前面的规则转换返回的字符串。

     1 //整数字符串或者带小数点字符串
     2         document.write(Number("8944") + "<br>"); //8944
     3         document.write(Number("89.44") + "<br>");//89.44
     4         document.write(Number("10*10") + "<br>");//NaN
     5         document.write(Number(0666) + "<br>");//NaN
     6         //带字符的数字
     7         document.write(Number("8944hh") + "<br>");//NaN
     8         document.write(Number("hh8947") + "<br>");//NaN
     9         //为空或者undefined
    10         document.write(Number() + "<br>");//0
    11         document.write(Number(undefined) + "<br>");//NaN
    12         //前置0x
    13         document.write(Number("0xfff") + "<br>");//4095
    14         document.write(Number("06666") + "<br>");//6666
    15         //前置一个或多个0
    16         document.write(Number("08944") + "<br>");//8944
    17         document.write(Number("00010101") + "<br>");//默认转成十进制
    18         //布尔值
    19         document.write(Number(true) + "<br>");
    20         document.write(Number(false) + "<br>");
    21         //对象或者函数
    22         function num(){return '123456'};
    23         document.write(Number(function(){}) + "<br>");//NaN
    24         document.write(Number(num()) + "<br>");//123456
    25         document.write(Number([1,2,3,4]) + "<br>");//NaN
    26         document.write(Number({a:1,b:2,c:3}) + "<br>");//NaN

    二、parseInt()

      1.parseInt(numstring, [radix])函数用于把字符串转换为整数。参数radix可选,如果设置2-36之间的整数,则表示numstring的进制,转成对应的十进制数字。但是numstring的是否符合设定的进制规则,需要注意。

      2.如果没有设置radix参数,则前置0x,0的数字会被当成十六进制和八进制。

      3.parseInt 是可以解析字符串中带字符的数字的,默认  parseInt()  方法会从字符串的首字符开始分析,如果是有效数字,就继续分析下一个位置的数字,知道发现非有效数字为止(字母、小数点、其他符号等)。

      4.parseInt 在转换浮点数的时候不是进行四舍五入,而是直接取小数点前面的整数。 

      5.parseInt 对数值表达式的转化,是先计算整数值。

      6.对布尔值、空值、undefined等,parseInt返回值都是NaN。

      7.传进去一个数组的时候,会返回数组中第一个的值,如果是NaN,然后在以字符串的形式进行转换。

     1 //整数字符串或者带小数点字符串
     2         document.write(parseInt("8944") + "<br>"); //8944
     3         document.write(parseInt("89.44") + "<br>");//89
     4         document.write(parseInt("10*10") + "<br>");//10
     5         document.write(parseInt(0666) + "<br>");//438
     6         //带字符的数字
     7         document.write(parseInt("8944hh") + "<br>");//8944
     8         document.write(parseInt("hh8947") + "<br>");//NaN
     9         //为空或者undefined、布尔值
    10         document.write(parseInt(true) + "<br>");
    11         document.write(parseInt(false) + "<br>");
    12         document.write(parseInt() + "<br>");//NaN
    13         document.write(parseInt(undefined) + "<br>");//NaN
    14         //对象或者函数
    15         function num(){return '123456'};
    16         document.write(parseInt(function(){}) + "<br>");//NaN
    17         document.write(parseInt(num()) + "<br>");//123456
    18         document.write(parseInt(["11h",2,3,4]) + "<br>");//1
    19         document.write(parseInt({a:1,b:2,c:3}) + "<br>");//NaN

    三、parseFloat

      1.parseFloat(numstring)和parseInt类型,只是转成浮点数。

      2.需要注意的是,在进行转换的的时候,只会解析遇到的第一个有效的小数点,后边遇到的小数点和字符会被当成无效字符,停止解析

      3.在进行字符串解析的时候,parseFloat始终会忽略前置的0,如  "0xfff", 会被解析成0。

    1         document.write(parseFloat("8944") + "<br>"); //8944
    2         document.write(parseFloat("89.44") + "<br>");//89.44
    3         document.write(parseFloat("89.44.44") + "<br>");//89.44
    4         document.write(parseFloat(0666) + "<br>");//438
    5         document.write(parseFloat(0x10) + "<br>");//16
    6         document.write(parseFloat("0xfff") + "<br>");//0    
    Number()方法与parseInt()方法、parseFloat()方法区别
    Number() parseInt() parseFloat
    Number(false),结果为0 parseInt(false),结果为NaN parseFloat(false),结果为NaN
    Number(true),结果为1 parseInt(true),结果为NaN parseFloat(true),结果为NaN
    Number(null),结果为0 parseInt(null),结果为NaN parseFloat(null),结果为NaN
    Number("1.1.1"),结果为NaN parseInt("1.1.1"),结果为NaN parseFloat("1.1.1"),结果为NaN
    Number("123HELLO"),结果为NaN parseInt("123HELLO"),结果为123 parseFloat("123HELLO"),结果为123
  • 相关阅读:
    QFramework 使用指南 2020(二):下载与版本介绍
    QFramework 使用指南 2020 (一): 概述
    Unity 游戏框架搭建 2018 (二) 单例的模板与最佳实践
    Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介
    Unity 游戏框架搭建 2017 (二十三) 重构小工具 Platform
    Unity 游戏框架搭建 2017 (二十二) 简易引用计数器
    Unity 游戏框架搭建 2017 (二十一) 使用对象池时的一些细节
    你确定你会写 Dockerfile 吗?
    小白学 Python 爬虫(8):网页基础
    老司机大型车祸现场
  • 原文地址:https://www.cnblogs.com/mwxz/p/13297172.html
Copyright © 2020-2023  润新知