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

 

   

   

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

js——类型转换原理

一段js代码,如下: (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 猜猜运行结果是什么? 太风骚了有...
  • lengyuefengqing
  • lengyuefengqing
  • 2016年06月29日 09:55
  • 367

JS:类型转换string 转换成为 number

JS 中将 number 转换为 string 我们比较熟悉,直接用toString() 的方法就可以了;那么将 string 转换成为 number 都有些什么方法呢?如下便简单的列举了一些,以便记...
  • m0_37775035
  • m0_37775035
  • 2017年04月23日 16:22
  • 616

string,number类型转换的快捷方法

 string,number类型转换的快捷方法 // @param s为字符串,n为数字 function fn(obj){ //转换为String类型 var s = obj +...
  • black__zzc
  • black__zzc
  • 2016年08月14日 22:40
  • 2831

Python的基本数据类型之Number以及String

Python的基本数据类型之Number以及String
  • wolinghuanyun
  • wolinghuanyun
  • 2016年09月05日 23:29
  • 1614

Python数据类型Number数字

Python数据类型Number数字
  • weixin_38208401
  • weixin_38208401
  • 2017年06月21日 09:10
  • 260

javascript基础知识梳理-Number与String之间的互相转换

Number和String之间的互相转换 //将Number数字转换成String字符串 //第一种方法是使用String()函数,该方法有局限性,即无法将某个数值转换成不同进制的,也无法选取有...
  • dc15822445347
  • dc15822445347
  • 2014年04月09日 18:24
  • 18842

string字符串类型转换为number数字类型

string字符串类型转换为number数字类型 1、五种方法 Number() 、parseInt()、 parseFloat()、new Number() 、*(/) 2、差别 第一个...
  • dolphin_xujing
  • dolphin_xujing
  • 2016年09月28日 17:03
  • 3780

javascript数字类型(Number)不精确问题

JavaScript中所有的数字,无论是整数还是小数,其类型均为Number。在程序内部,Number类型的实质是一个64位的浮点数,这与Java中double类型的浮点数是一致的;因此,JavaSc...
  • suo082407128
  • suo082407128
  • 2016年11月23日 11:21
  • 550

数据库中的number类型在java类中应该是什么类型

数据库中的number类型在java类中应该是什么类型 数据库中的number是指的数量 我的是一个论坛的数据库 number表示的是帖子的阅读的数量 在java类中应该是什么类型呢 用Stri...
  • evilcry2012
  • evilcry2012
  • 2016年09月07日 11:03
  • 4318

input值的比较——string转化为number类型的方法

input值的比较的一些问题分析和string类型转化为number类型的几种常用方法
  • fxss5201
  • fxss5201
  • 2017年01月19日 22:35
  • 1672
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript中Number类型,Number,parseInt转换函数特殊情况总结
举报原因:
原因补充:

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