您的位置:首页 > Web前端 > JavaScript

JavaScript中Number类型,Number,parseInt转换函数特殊情况总结

2016-07-01 10:21 489 查看
 JavaScript中有5中基本数据类型:Undefined、Null 、Boolean 、 Number  和String。还有一种复杂的数据类型----Object。

ECMA定义了不同的数值字面量格式,比如整数和浮点数。整数字面量格式有十进制,八进制和十六进制。浮点数值是该数值中必须包含一个小数点,并且小数点后面至少包含一位数字。 对于浮点数有一点需要注意, 由于浮点数值的精度问题,不能通过 “=”判断两个浮点数是否相等,这是因为浮点计算会产生误差问题。所以永远不要去测试某个特定的浮点数值。

    1 虽然JavaScript中数值没有像  c中int  double float类型,但是其能表示的数值范围也是有限的,大多数浏览器中,最小值为5e-324,最大值为1.7976931348623157e+308 ,最大最小值保存在 Number.MIN_VALUE 和Number.MAX_VALUE 中。超出表示范围会返回-Infinity 和 Infinity 。一个数字是不是无穷大可以用
isFinite()判断 。

  2  还有一个特殊的数值,NaN(not a number) ,当0为分母或者 用number函数转换字符串时会返回NaN ,任何涉及NaN 的操作都会返回NaN ,这在多不计算中会导致问题,因此判断一个数字是不是NaN 十分重要,但是NaN 与任何值都不相同,换句话说 

alert (NaN == NaN ) 会得到false 。因为不能使用  a == NaN  来判断数字a是不是NaN ,因此ECMAScript提供了isNaN ()函数判断一个数字是不是NaN 。这个判断在需要用number将字符串转为数字的时候尤其重要,比如判断一个字符串是否符合ip地址标准,具

参考这里  。导致NaN出现的一大类原因是Number类的转换函数。

     3  转换函数,有三个函数可以把非数值转换为数值,Number() ,parseInt() ,parseFloat() ,Number()函数可以用于任何数据类型,

parseInt() ,parseFloat()则专门用于把字符串转换为数值。三个函数对于同样的输入输出是不一样的。

Number()

²  对于Boolean值,转为1或0;

²  对于数字值,简单的传入传出;

²  如果是null值,返回 0;

²  如果是undefined ,返回 NaN;

²  对于字符串:

²  如果字符串中只包含数字(包括正负号),八进制十六进制都则将其转换为十进制,但是会忽略前导0,比如 “012”-> 12. 会忽略前导空格但不会忽略中间空格,“
12”-> 12. “1 23”-> NaN.

²  如果字符串为空,返回 0;

²  字符串含有字符则返回NaN。

parseInt() 函数和parseFloat()专门用于转换字符串,因此在处理字符串的时候更常用这两个函数。他们针对字符串的准换更合理一些。

 parseInt()准换规则:

²  忽略空格,找到第一个非空字符如果第一个非空字符不是数字字符或者负号,则返回NaN。

²  对于空字符串,会返回NaN。

²  第一个字符为数字字符中间含有其他负号,则只返回前面正常的数字。比如:“123abc234”—> 123

使用parseInt时还可以指定转换基数,比如:parseInt(“10”,16) —> 16.

parseFloat和parseInt处理规则类似。

基于 parseInt() 函数和parseFloat() 转换字符串的时候会对处理一下,如果我们只是想拿来计算这种处理很好,但是如果我们想转为数字之后进行判断原来字符串中是否含有

空格,前导0等 则由于准换规则无法判断,比如对于输入ip地址字符串的判断,此时我们可以用

    "  v ==  parseInt(v) .toString()
 "  判断是否含有前导 0 或者空格 。

 

 
 

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息