首页 > 编程语言 >javascript中parseInt的问题

javascript中parseInt的问题

时间:2023-08-28 14:06:18浏览次数:41  
标签:write 进制 10 javascript 问题 字符串 parseInt document


今天遇到一个有趣的问题,就是在用javascript的parseInt函数时,parseInt("08")或者parseInt("09")返回的居然是0,而parseInt("01")...parseInt("07")都是正确的,一开始很难理解,后来发现出现这个问题的原因是当在前面有"0"时,javascript会认为这是一个八进制数,而"08"和"09"不是一个合法的八进制数,所以导致了那个问题,但是parseFloat不会存在这个问题。

 

事实上,parseInt方法有一个可选参数来表示数字的进制,所以这应该不能算是一个bug,只是我们平时没有注意到这种细节问题。那么解决的方法很简单,就是使用parseInt("08",10)或者parseInt("09",10),通知javascript解释器使用十进制来解析就可以了。

 

下面是这个方法的说明:

parseInt()方法用于将一个字符串转换为整型数字。

 

语法:

parseInt(string, radix)

 

 

参数

描述

string

必选项。所要转换的字符串

radix(进制)

可选项。2到36,指定字符串的进制类型

 

 

注意:

  1. 只返回字符串的第一组连续数字
  2. 允许字符串包含空格
  3. 如果字符串的第一个字符不能被转换成数字,将返回NaN
  4. 如果没有指定进制参数,JavaScript将依照下列规则进行:
    如果字符串以"0x"开始,视为16进制
    如果字符串以"0"开始,视为8进制
    其他的视为10进制

实例:



<script type="text/javascript">
 document.write(parseInt("10") + "<br />");
 document.write(parseInt("10.00") + "<br />");
 document.write(parseInt("10.33") + "<br />");
 document.write(parseInt("34 45 66") + "<br />");
 document.write(parseInt(" 60 ") + "<br />");
 document.write(parseInt("40 years") + "<br />");
 document.write(parseInt("He was 40") + "<br />");
 document.write("<br />");
 document.write(parseInt("10")+ "<br />");
 document.write(parseInt("10",10)+ "<br />");
 document.write(parseInt("010")+ "<br />");
 document.write(parseInt("10",8)+ "<br />");
 document.write(parseInt("0x10")+ "<br />");
 document.write(parseInt("10",16)+ "<br />");
 document.write(parseInt("08")+ "<br />");
 document.write(parseInt("08",10)+ "<br />");
</script>



 输出结果:

10
10
10
34
60
40
NaN

10
10
8
8
16
16
0
8

标签:write,进制,10,javascript,问题,字符串,parseInt,document
From: https://blog.51cto.com/u_16237557/7263399

相关文章

  • 你不知道的 JavaScript - “this”
    JavaScript里的this到底指得是什么?很多人都会告诉你this指的是当前对象。这样理解对么?在大多数情况下确实没错。比如我们经常会在网页上写这样的JavaScript: <inputtype="submit"value="提交"onclick="this.value='正在提交数据'"/......
  • JavaScript FSO属性大全
     什么是FSO?FSO即FileSystemObject文件系统对象,是一种列表Windows磁盘目录和文件,对目录和文件进行删除、新建、复制、剪切、移动等操作的技术。使用FSO网站的好处:直接读取目录下的文件和子目录,方便维护,如需要添加任何内容,将文件放在相应的目录下即可;FSO网站类似Window......
  • Javascript中this的用法小结
    1.概述this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象。但是在javascript中,由于javascript的动态性(解释执行,当然也有简单的预编译过程),this的指向在运行时才确定。这个特性在给我们带来迷惑的同时也带来了编程上的......
  • [struts2]配置dispatcher INCLUDE和Forward可能问题解决
    Struts2.1.6GA不支持<dispatcher>FORWARD</dispatcher>和<dispatcher>INCLUDE</dispatcher>你要是和URLRewrite过滤器一起工作会报错。目前最新版本GeneralAvailability(GA)Releases-ReadyforPrimeTime!Struts2.1.8("bestavailable")Struts2.0.14(&qu......
  • Javascript Print(*)
    1.实现打印功能1)ExecWB()通过脚本程序来调用IE菜单下面的打印命令。实现的代码如下:<scriptlanguage="javascript">functionprintsetup(){//打印页面设置wb.execwb(8,1);}functionprintpreview(){//打印页面预览wb.execwb(7,1);......
  • Javascript压缩工具
    javascriptcompressor.com(在线压缩)shrinksafe.dojotoolkit.org(在线文件压缩)dean.edwards.name/packer(在线压缩)YUICompressor(使用命令行来压缩,需要JAVA虚拟机来运行压缩程序 有个压缩比更高的,是个要注册的软件...javascriptObfuscatorhttp://www.javascript-source.......
  • vue3同一页面内重复引用同一操作dom的组件产生的问题
    [2023年8月28日12:39:40]vue3同一页面内标签<component>重复引用同一组件,且该组件内使用css选择器进行dom操作导致页面内相同组件发生变化的问题解决记录组件内进行dom操作,需要通过js方法进行选择器的元素获取,但当vue3全部渲染完毕后,页面内有多个id为test9的相同元素,元素选择将......
  • k8s搭建遇到的问题
    1.端口不能使用例如66662.docker没有restart导致网络没生效3.calico因为网卡导致routeip出错  pod直接访问内部17.XXX网卡的ip,而且ip不断变化和新增的pod不好管理->使用service例如label来管理相同的pod,可以使用customIP类型但是外部访问不了->使用service的nodePo......
  • JDK1.5在WIN7中显示时间不正确的问题解决
    最近发现一些新的windows操作系统中,JDK显示的时区不是正确的GMT+08的,而是默认的格林威治时间原以为是系统时区设置不对,但发现系统时间正确,时区也正确,就是JDK的不正确网上很多方法都是手动改tomcat设置,或者在代码中写死时区,这种做法都是治标不治本的于是继续查找根本所在后来几经比......
  • 服务启动连接redis报错问题
    报错截图如下1,该报错为redis认证问题,也就是需要redis登录密码,需要在配置文件redis配置中,需填写密码2,对于redis的修改有一下操作 2.1,关闭redis的保护模式:打开redis的配置文件,redis.conf文件,找到protected-mode,改成no, 2.2,设置redis密码,requirepass***  到redis的......