zoukankan      html  css  js  c++  java
  • 关于parseInt()里的一些小坑

    parseInt(string,radix)方法是将输入字符串转化为数值,两个输入参数中string为要转化的字符串,radix可省略,是浏览器以几进制来解读输入的string。

    举几个例子就能够对该方法有基本的了解了,如下:

    parseInt("123"); //123

    parseInt("123ab123"); //输出123  因为出现字母所以该字母及之后的字符都不被解析

    若输入字符串首位是0或者0x之外的数字,则在radix缺省的情况下,默认解读为10进制。

    0X默认解读为16进制

    parseInt("0x10"); //字符串以0x开头则将之后的数字按16进制解读,16进制的10也就是十进制的16, 因此输出为16

    parseInt("0xa"); //10,要注意16进制包括0~9,a~f (也就是10~15),超出该范围的字符不被解读。

    parseInt("0xg"); //NAN

    这三个例子分别等价于 parseInt("0x10",16)  parseInt("0xa",16)  parseInt("0xg",16)

    以0开头的默认解读为八进制,但是不同浏览器解读方式不同,

    parseInt("011"); //chrome下输出为11也就是会忽略首位的0,将011当成10进制解读,别的浏览器未测试--

    parseInt("011",8); //此时会输出正确的9

    因为这个坑,所以建议需要以八进制解读时,带上第二参数radix并设置为8,以免出问题

    parseInt("09",8); //八进制取值范围为0~7,不包括9,因此9不能被解读,这时相当于parseInt("0",8);输出0

    最后有一个特殊情况:

    parseInt("0.000000434"); //4

    parseInt("0.00000434"); //0

    造成这种情况的原因可能是因为:

    document.write(0.000000434+"<br/>"); //4.34e-7
    document.write(0.00000434+"<br/>");//0.00000434

    当小数点后有6个或者以上的0时,会以科学记数法存储,所以--。

    部分内容参考https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

  • 相关阅读:
    springboot 2.3.3与springcloud Greenwich.SR1兼容问题
    Spring WebClient使用
    jquery选择器
    jquery入门
    tomcat
    web基础常识
    python面对对象
    python读取excel生成verilog代码并例化
    python学习之re的正则修饰符
    python学习笔记re常用的方法
  • 原文地址:https://www.cnblogs.com/lesliecn/p/7301601.html
Copyright © 2011-2022 走看看