转换成数值的三种方法

把参数转换成数值的三种方法:Number(),ParseInt(),ParseFloat()

Number():

   入参                                                 出参

   true/false                                    1/0

   数值,如1                                   数值1

   空字符串                                     0

   字符串只包含有数字(如011)                         11(忽略前导0)

   字符串包含有效的浮点格式(如01.11)                      1.11(忽略前导0)

   字符串包含有效的十六进制格式(如0xf)                   十进制整数:15

   字符串包含除上面几种格式以外的字符(如000xf)               NAN

   对象                                    先调用obj.valueOf(),如果是NAN,则再调用obj.toString(),如果不能转换成数值,就返回NAN

 

ParseInt():  符合数值格式即被转成整数数值,其他则为NAN;路径为忽略空字符串,第一个字符如果不是数字或者负号,则为NAN

   入参                                     出参

   空字符串 / 第一个字符不是数字或者负号(如‘blue235’ / '.23' / ' ')          NAN

   '123blue'                                   123

   '22.5'                                    22

 

注意:ES3和ES5对于是否按照八进制和十六进制解析是有差异的,ES5不支持这么解析,所以可能会出错。为了明确能够按照我们希望的进制格式去解析,推荐指定进制格式。如parseInt('0xf',16),即使是十进制数值,也建议标明是10进制,如parseInt('012',10)。

 

ParseFloat():  符合数值格式即被转成浮点数数值,其他则为NAN;路径为忽略空字符串,第一个字符如果不是数字或者符号,则为NAN

1、parsefloat只解析十进制数据,所以会忽略前导0,因此如parsefloat('0xA')会返回0

2、parsefloat解析字符串中第一个小数点,第二个小数点就是无效的字符了,停止往后解析

   入参                                    出参

   ‘1234blue’                                  1234

   '0xA'                                    0

   '22.5.5'                                   22.5

   '098.5'                                    98.5

     '33.000'                                   33

posted @ 2018-12-14 14:18  coconutGirl  阅读(2057)  评论(0编辑  收藏  举报