十年专注于品牌网站建设 十年专注于品牌网站建设,低调、有情怀的网络应用服务商!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

继续详细介绍Number()、parselnt()和parseFloat()函数的用法

百恒网络 2012-02-09 2964

关于parselnt()使用方法举例:

var num3=parselnt(”OxA“); //10(十六进制数)

var num4=parselnt (22.5)j // 22

var num5=parselnt(”070”)j // 56(八进制数)

var num6=parselnt(”7 0”)j // 70(十进制数)

var num7=parselnt(“Oxf”); //15(十六进制数)

理解这几个例子时,最关键的是要注意parselnt()解析”070”和”70”的不同方式。此时。070中的前导零表示这是一个八进制(而非十进制)格式的字符串,因而结果是56(注意这个结果与调用:umber()函数不同)。而”70”呢,由于它没有前导的零,因此就被转换成了70。为了消除在使用parselnt()函数时可能导致的上述困惑①,ECMAScript也为这个函数提供了第二个参数:转换时使用的基数(即多少进制)。

如果知道要解析的值是十六进制格式的字符串,那么指定基数16作为第二个参数,可以保证得到正确的结果,例如:

var num=parselnt(”OxAF", 16); //175

实际上,如果指定了16作为第二个参数,字符串可以不带前面的”Ox”,如下所示:

var riurril=parselnt(。’AF”, 16) //175

var num2=parselnt(”AF”); //NaN

这个例子中的第一个转换成功了,而第二个则失败了。差别在于第一个转换传人了基数,明确告诉parselnt()要解析一个十六进制格式的字符串;而第二个转换发现第一个字符不是数字字符,因此就自动终止了。南昌网络公司百恒网络前端开发工程师认为指定基数会影响到转换的输出结果。例如:

var nuffil=parselnt(”10”,2); //2 (按二进制解析)

var num2=parselnt(”10“,8); //8 (按八进制解析)

var num3=parselnt(”10”,10); //10(按十进制解析)

var num4=parselnt(”10”,16)j。 //16(按十六进制解析)

由于不指定基数则意味着让parselnt()决定如何解析输入的字符串,因此为了避免错误的解析,南昌网站建设公司百恒网络前端开发工程师建议无论在什么情况下都明确指定基数——特别是在像下面这样处理八进制值的情况下:

var numl=parselnt(”010”)j //8 (按八进制解析)

var num2=parselnt(“010”,8); //8 (按八进制解析)

var num3=parselnt(“010”,10); //10(按十进制解析)

在这个例子中,”010”会因第二个参数不同而被转换成不同的值。第一行的转换很直观,即让parseInt()决定如何转换。由于第一个字符是”o”而后面也是数字字符,因而parseInt()假设它是一个八进制数。实际上,parseInt()的这个默认行为与第二行转换中明确指定了基数的行为是一致的。第三行传人的基数是10,因此parselnt()就会忽略字符串中所有前导的”o”,而只解析其余的数字字符。 与parseInt()函数类似,parseFloat()也是从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。举例来说,”22.34.5”将会被转换为22.34。除了第一个小数点有效之外,parseFloat()与parseInt()的第二个区别在于它始终都会忽略前导的零。parseFloat()可以识别前面讨论过fOFf/有浮点数值格式,也钮栝±0印于F;写符串则始终会被转换成0。由于parseFloat()只解析十进制值,因此它没有用第二个参数指定基数的用法。最后还要注意一点,如果字符包含的是一个可解析为整数数(没有小数点,或者小数点后都是零),parseFloat()会返回整数。以下是使用parseFloat()转换数值的几个典型示例:

var numl=parseFloat( "123 4blue”); //1234 (整数)

var num2=parseFloat(“OxA"); //0

var num3=parseFloat("22.5"); //22.5

var num4=parseFloat( "22 .34.5");//22 .34

var num5=parseFloat("0908.5"); //908.5

var num6=parseFloat(”3.125e7”); //31250000

①ECMAScrip‘允许实现把以”o”(不是" Ox"或”OX”)开头的字符串解析为八进制或十进制数。而为了避免歧义,在转换这种字符串时,应该为parselnt()指定第二个参数,即转换的基数。——南昌做网站公司工程师注

希望对广大站长或网站建设公司或从事企业网站建设的团队有所帮助,如对此不太理解的,可以与南昌网络公司百恒网络技术部联系。我们很高与广大站长和网站建设公司技术人员分享我们的技术和经验。

400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×