JavaScript的parseInt 取整使用_javascript技巧

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 方法时要带上进制参数.

时间: 2024-12-23 22:07:56

JavaScript的parseInt 取整使用_javascript技巧的相关文章

JavaScript的parseInt 进制问题_javascript技巧

翻了下JS编程手册,原来parseInt会自动对传递的参数值转换成相应的八.十.十六进制值.这种情况可以设定进制用以区分特殊情况. 复制代码 代码如下: parseInt(09,2) | parseInt(09,10) | parseInt(09,8) | parseInt(09,16) 其实像这些问题完全可以避免的,关键是要耐心.

javascript根据像素点取位置示例_javascript技巧

复制代码 代码如下: <html>    <body>        <canvas id="canvas" width="100" height="100" style="background-color: #000;"/>         <script>            function position  (x,y){                this.x =

JavaScript的漂亮的代码片段_javascript技巧

 动态构建正则表达式 复制代码 代码如下:  new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ) 来自sizzle,动态构建正则时,这样做避免了字符转义. 更灵活和巧妙的数字补零 复制代码 代码如下: function prefixInteger(num, length) {    return (num / Math.pow(10, length)).toFixed(length).subs

JavaScript数字和字符串转换示例_javascript技巧

1. 数字转换为字符串 a. 要把一个数字转换为字符串,只要给它添加一个空的字符串即可: 复制代码 代码如下: var n = 100; var n_as_string = n + ""; b. 要让数字更加显式地转换为字符串,可以使用String()函数: 复制代码 代码如下: var string_value = String(number); c. 使用toString()方法: 复制代码 代码如下: string_value = number.toString(); Numbe

基于javascript制作微博发布栏效果_javascript技巧

本文为大家分享了做微博发布栏效果的过程,涉及到的知识点包括以下: 1.判断IE的方法:直接用  var ie=!-[1,];即可 2.连续发生事件的用法:  IE下:触发对象.onpropertychange  标准下:触发对象.oninput 3.焦点聚集和移开事件.onfocus和onblur 4.判断单字节(0-255之间)与双子节:正则表达式:/[^\x00-\xff]/g 代码如上: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra

用javascript实现小数取整

JS: function truncateNumber(n){ return n|0; } 测试: console.log(truncateNumber(12.345)); 浏览器打印出12 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/script/ 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript , 浏览器 , fun

JavaScript原生对象常用方法总结(推荐)_javascript技巧

下面都是我学习W3C School教程中有关JavaScript写的学习笔记,每个方法我都亲身测试过,每个方法的用途和参数列表,我都是在经过我亲身实践后加上了我自己的一点理解,解释的还算比较详细.现记录下来,以便查阅: javascript之Array类: 创建js数组两种方式: var arr = [];  或 var arr = new Array(); ()里可以指定长度,也可以不指定,指不指定都无所谓, 因为js里的数组长度是可变的 concat(arr1,arr2,arr3......

JavaScript代码里的判断小结_javascript技巧

比较判断 比较判断是比较两个值,返回一个布尔值,表示是否满足比较条件.JavaScript一共提供了8个比较运算符,这里主要说一下严格相等运算符和相等运算符的区别 严格相等运算符=== 判断 返回 两个值类型不同 false 两个值都是null/undefined/true/false true 两个值其中之一为NaN false 两个值都为数值且值相等 true 两个值都为字符串,且值相等 true 两个值都指向同一个引用类型 true 1 === "1" // false true

JavaScript 放大镜 放大倍率和视窗尺寸_javascript技巧

对JavaScript 放大镜来说, 计算倍率必不可少. 一个完整的放大镜结构里, 与倍率扯上关系的一共有 4 个对象, 原图, 缩略图, 镜片和视窗. 镜片在缩略图上的覆盖位置, 其实就是视窗对原图的部分展示, 所以它们之间有如下关系. 倍率 = 原图/缩略图 = 视窗/镜片 倍率一般大于等于 1, 因为原图一般都不会小于缩略图. 一旦倍率小于 1, 则将倍率设为 1. 因为缩略图和原图的尺寸是不可变的, 所以我们通过它们来获得倍率.  复制代码 代码如下: /** * 获取放大镜放大倍数 *