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

原创 2016年07月01日 10:21:10

 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 或者空格 。

 

   

   

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c++函数指针、虚继承大小、类型转换、C特殊情况记录

1. 函数和数组的修饰符的优先级通常比指针修饰符高,故一般要加(),如: int *f();//表示一个返回int *的函数声明。 int (*f) ();//函数指针,所指函数返回值为int型的...

JavaScript中关于parseInt(),Number(),parseFloat()以及一元运算符“+”将字符串类型转换为数字类型的对比

昨天看到了JS中基本类型互相转换的一些内容,遇到了pareInt()和Number()两种方式,感觉以前只是应用但是对其没有一个系统的了解,去网上大致了解了一下,自己总结了一下: parseInt()...

(数据类型-Number特殊数值)JavaScript权威指南笔记4.4

特殊的数值Infinity:表示无穷大 NaN:非数字值 Number.MAX_VALUE:可表示的最大数字 Number.MIN_VALUE:可表示的最小数字 Number.NaN:非数字值...

javascript的征程五---特殊的引用类型Bollean、Number、String(未完待续)

引用类型与基本包装类型的主要区别就是对象的生存期。使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,...

memset+strcpy+strncpy的函数详解以及字符数组输出的特殊情况

memset: 头文件:#include在 原型:   void *memset(void *s, int c, size_t n); 将已开辟内存空间的s所指向的每一块内存中的每一个字节全部设...

重写父类函数时的特殊情况

1.静态父类方法        在C++中无法重写静态方法。其实子类和父类存在同名的静态方法,它们是两个独立的方法。静态方法是属于类的,调用是通过类名而不是对象,虽然也可以通过对象调用静态方法,也就...
  • zhx6044
  • zhx6044
  • 2013年05月17日 22:27
  • 2624

boost::bind绑定成员函数时,第一个参数传递对象的特殊情况

boost::bind绑定成员函数时,第一个参数传递对象的特殊情况 boost::bind(&memberfunction, obj, _1, _2........)类似这样的用法,我们叫做成员函数...

上手上路之 js 数据类型 number和parseInt..的代码笔记

  • edtwar
  • edtwar
  • 2017年07月20日 19:48
  • 96

Android知识总结:Universal-Imageloader学习笔记5 一种特殊情况下的图片缓存方式

背景 在最近的项目中,由于后台的特殊要求,每次加载图片时,图片url都会携带一个时间戳,即如下图片格式为这样的形式:http://xxxx/aaaa/cccc.jpg?timestamp 其中问号前面...
  • lidec
  • lidec
  • 2016年01月06日 23:36
  • 711
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript中Number类型,Number,parseInt转换函数特殊情况总结
举报原因:
原因补充:

(最多只允许输入30个字)