JavaScript的parseInt 取整使用


Posted in Javascript onMay 09, 2011

Java 也有 Integer.parseInt() 方法, 但是 JavaScript 的 parseInt 处理方式与 Java 等强整型语言不太一样, 所以经常有人因为对这个方法的使用不当而获得异常返回.

下面是一段 Java 代码, 用于将字符串 020 转为整型.

public class Test { 
public static void main(String args[]) throws Exception { 
String str = "020"; 
System.out.println(Integer.parseInt(str)); 
} 
}

输出结果是 20

下面是一段 JavaScript 代码, 同样是将字符串 020 转为整型.

var str = "020"; 
var num = parseInt(str); 
alert(num);

输出结果是 16

为什么呢?
无论是 Java 还是 JavaScript, parseInt 方法都有两个参数, 第一个参数就是要转换的对象, 第二个参数是进制基数, 可以是 2, 8, 10, 16, 默认以 10 进制处理. 但在 JavaScript 中, 0 开始的数被认为使用 8 进制处理, 0x 的数被认为是用 16 进制来处理. 所以上面的 JavaScript 代码计算错误了.

影响大吗?
大! 很大! 因为这个经常用于计算价钱, 一旦价格错误, 对用户来说, 这是误导, 而一个好的网站不应该出现这种误导用户的. 下面的 DEMO 中, 没有指定进制. 大家可以在数量框中输入一个以 0 开头的数字, 在点击计算按钮, 算出来的数值将比预想中的小一些, 或者小很多 (如: 8 进制中没有 019 这样的数值, 所以数值变成了 1, 9 被忽略掉).
没有为 parseInt 函数指定进制的 DEMO

如何修改?
前面说过, 有两个参数, 第二个参数可以指定计算使用的进制.

parseInt(num, radix);

所以我们可以将前面有问题的那段 JavaScript 代码改写为下面的代码.
var str = "020"; 
var num = parseInt(str, 10); 
alert(num);

这样处理的话, 我们再重写一些前面的 DEMO, 如下:
为 parseInt 函数指定进制为 10 的 DEMO
记住了, 在 JavaScript 上使用 parseInt 方法时要带上进制参数.
Javascript 相关文章推荐
保证JavaScript和Asp、Php等后端程序间传值编码统一
Apr 17 Javascript
Jquery动态进行图片缩略的原理及实现
Aug 13 Javascript
javascript刷新父页面的各种方法汇总
Sep 03 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
avascript中的自执行匿名函数应用示例
Sep 15 Javascript
js模仿php中strtotime()与date()函数实现方法
Aug 11 Javascript
javascript实现抽奖程序的简单实例
Jun 07 Javascript
AngularJS基础 ng-model-options 指令简单示例
Aug 02 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
Dec 14 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
Jul 12 Javascript
vue生命周期与钩子函数简单示例
Mar 13 Javascript
原生js+canvas实现贪吃蛇效果
Aug 02 Javascript
实现变速回到顶部的JavaScript代码
May 09 #Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
May 09 #Javascript
Chrome Form多次提交表单问题的解决方法
May 09 #Javascript
JQuery将文本转化成JSON对象需要注意的问题
May 09 #Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
May 07 #Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
May 07 #Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
May 07 #Javascript
You might like
php 读取shell管道传输过来的内容
2010/03/01 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
javascript之AJAX框架使用说明
2010/04/24 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python数据类型详解(四)字典:dict
2016/05/12 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
python清除函数占用的内存方法
2018/06/25 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
重阳节登山活动方案
2014/02/03 职场文书
学校端午节活动方案
2014/08/23 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
责任书格式
2019/04/18 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
如何用python绘制雷达图
2021/04/24 Python
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL
spring boot实现文件上传
2022/08/14 Java/Android