`
安之若素
  • 浏览: 144827 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

关于js的parseInt方法自动计算错误

阅读更多
<script type="text/javascript">
	function test(){
					alert(parseInt("01")-parseInt("03"));
					alert(parseInt("02")-parseInt("03"));
					alert(parseInt("03")-parseInt("03"));
					alert(parseInt("04")-parseInt("03"));
					alert(parseInt("05")-parseInt("03"));
					alert(parseInt("06")-parseInt("03"));
					alert(parseInt("07")-parseInt("03"));
					alert(parseInt("08")-parseInt("03"));//结果为负
					alert(parseInt("09")-parseInt("03"));//结果为负
					alert(parseInt("10")-parseInt("03"));
					alert(parseInt("11")-parseInt("03"));
					alert(parseInt("12")-parseInt("03"));
	}

</script>
  </head>
  <body>

  <a href="javascript:test()">点击</a>

  </body>
</html>

  

 

   弹出结果依次为:-2  -1  0  1  2  3  4  -3  -3  7   8   9

  

查找了JS的文档后发现这个问题发生的原因是前面的"0",parseInt方法有一个可选参数来表示数字的进制,以"0"作为首字符的字符串会被JS识别为八进制数并将没有指定数字进制参数的参数值默认为8,从而以八进制来解析字符串,而"08"和"09"都不是合法的八进制数,所以被解析为0。</P>

实际上,这是个不注意细节引起的问题,显式设置进制参数的parseInt根本不会出现这个问题,parseInt("08",10)或parseInt("09",10)都能返回正确的数值。另外,parseFloat不会存在这个问题

 

分享到:
评论
1 楼 soutnila 2012-06-28  
非常好,我也发现这个问题的。只是没有像你这样写成blog。向你学习了。。

相关推荐

    使用JavaScript 完成表单的自动计算

    本篇将深入探讨如何利用JavaScript完成表单的自动计算,以提高用户体验并简化前端逻辑。 一、基本概念 1. JavaScript:JavaScript是一种解释型的、面向对象的、弱类型的脚本语言,主要用于浏览器端,处理用户输入...

    前端面试题之parseInt.zip

    在JavaScript中,不提供自动识别二进制、八进制和十六进制字符串的功能,因此`parseInt`的基数参数尤为重要。例如,前导`0`在JavaScript中默认不会被视为八进制表示,除非明确指定基数为8。 2. **解析规则**:`...

    jQuery购物车自动计算金额表单适应于商城购物结算.zip

    "jQuery购物车自动计算金额表单适应于商城购物结算"是一个专门针对这个需求的解决方案。这个压缩包文件包含了实现这一功能所需的代码和资源,主要依赖于JavaScript库jQuery。 jQuery是一个广泛使用的JavaScript库,...

    原生js滑动图片轮播切换效果代码原生js简易购物车商品数量计算代码

    在本文中,我们将深入探讨如何使用原生JavaScript实现滑动图片轮播切换效果以及简易购物车中的商品数量计算。这两个功能是Web开发中常见的需求,尤其是对于电子商务网站来说。 首先,我们来关注“原生js滑动图片...

    js验证银行卡号

    在IT领域,特别是前端开发中,使用JavaScript进行数据...总之,通过上述代码,我们可以在JavaScript中实现一个有效的银行卡号验证器,确保在用户输入银行卡号时能够自动检测并纠正错误,提升用户体验和系统的安全性。

    JavaScript笔记

    js的方法定义:function方法名([参数列表]){ 方法体 [return 返回值] } 注意:js中的方法可以直接写在代码中,不需要“类”包裹 使用方法:方法名()--&gt;方法调用--&gt;立即执行 2.js文件:网页外专门保存js...

    JS基础笔记(大部分)

    2. 转换进制的方式通常使用`parseInt()`或`toString()`方法。例如,将十六进制转换为十进制可以这样写:`parseInt('123', 16)`。 #### 五、隐式类型转换 1. **隐式类型转换**是指当运算符的两侧出现不同类型的值时...

    2021-2022计算机二级等级考试试题及答案No.13786.docx

    10. 使用JavaScript打开新窗口,应使用`window.open()`方法,正确选项是B。 11. SQL查询中,使用LIKE操作符来匹配含有特定模式的字符串,题中要求查找名字第二个字为“t”的学生,正确SQL语句使用LIKE "_t%"。 12....

    2021-2022计算机二级等级考试试题及答案No.13406.docx

    21. Java Application 注释:题目中提供的代码片段是关于静态方法(Static Stuff)的声明,但题目似乎不完整,没有提供足够的信息来分析整个 application 的特点。 这些知识点涵盖了数据库管理、编程语言(如 VB、...

    即查即用JavaScript核心对象参考手册

    全局对象是JavaScript环境中的顶级对象,所有未声明的变量和函数都会自动成为全局对象的属性和方法。例如,`window`在浏览器环境中就是全局对象,而Node.js中全局对象是`global`。 2. **数据类型对象**: - **...

    JavaScript语言教程&案例&相关项目资源

    - 对于金额处理等精确度要求较高的场景,推荐使用专门的库(如`bignumber.js`或`decimal.js`)来进行高精度的数值计算。 #### 五、类型转换问题 - **问题描述**:JavaScript中存在自动类型转换的特点,这可能导致...

    javascript入门笔记

    Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入在浏览器中的JS解释器 JS的发展史: 1、1992年 Nombas 开发...

    2021-2022计算机二级等级考试试题及答案No.12359.docx

    - 在Java中,通过`Integer.parseInt`和`Integer.valueOf`方法可以将字符串转换为整数类型。这两种方法的主要区别在于前者返回的是基本类型`int`,而后者返回的是`Integer`对象。因此,如果希望获得一个整数类型的...

    javascript中/运算符常见错误

    在C++中,整数除法会自动向下取整,而JavaScript中的`/`运算符则会返回一个浮点数结果,即使两个操作数都是整数。这个差异在编写特定算法,比如二分查找(binary search)时,如果不注意,可能会导致意外的行为。 ...

    JavaScript的基本知识

    关于代码错误,`switch`语句的使用中,每个`case`后面通常需要添加`break`语句来跳出`switch`块,否则程序会继续执行下一个`case`,直到遇到`break`或`switch`块结束。在提供的示例中,缺少`break`可能导致意外的...

    JavaScript核心笔记

    除了自动类型转换之外,JavaScript还提供了几种显式类型转换的方法: - **`toString()`**: 可以将数值、布尔值等转换为字符串。 - **`parseInt()`**: 将字符串、布尔值等转换为整数。 - **`parseFloat()`**: 将字符...

    2021-2022计算机二级等级考试试题及答案No.4831.docx

    5. `Integer.parseInt()`和`Integer.valueOf().intValue()`都是将字符串转换为整数的Java方法,最终结果都是整数类型变量,且值相等。 6. 面向对象系统三要素包括对象、属性和方法,而不包括变量。 7. Excel2003中...

    记录commomjs与数据处理方法

    在数据处理方面,JavaScript 提供了一系列内建函数和方法,使我们能够对数组、对象等数据进行各种操作。以下是一些关键的知识点: 1. **数组方法**: - `Array.prototype.map()`:创建一个新数组,新数组中的元素...

    帮助避免错误的Javascript陷阱清单

    ### 浮点运算的坑 在Javascript编程中,浮点数的运算可能会让初学者感到困惑。由于浮点数在计算机内部是以二...尽管Javascript有时可能会令人困惑,但通过熟练掌握这些基本概念和使用方法,可以大大减少编程中的错误。

    JavaScript编程精解

    此外,JavaScript 还可以用于服务器端编程(如 Node.js)、移动应用开发(如 React Native)等。 #### 二、JavaScript基本概念 1. **变量**: 变量是存储数据值的容器。JavaScript 使用 `var`, `let` 和 `const` ...

Global site tag (gtag.js) - Google Analytics