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
原文地址:https://www.cnblogs.com/mwxz/p/13297172.html