JavaScript 的 parseInt 取整

http://www.neoease.com/javascript-get-integer-via-parseint/

 

JavaScript 是弱类型语言, 为了确保数值的有用, 在拍卖数值的时候,
我们得以对数值字符串举行强行转换. 如 parseInt 取整和 parseFloat
取浮点数.

Java 也有 Integer.parseInt() 方法, 可是 JavaScript 的 parseInt
处理形式与 Java 等强整型语言不太一致,
所以平常有人因为对那一个主意的使用不当而赢得丰富重临.

 

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

输出结果是 20

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

输出结果是 16

为何吗?

甭管 Java 如故 JavaScript, parseInt 方法都有五个参数,
第一个参数就是要转移的靶子, 第二个参数是进制基数, 能够是 2, 8, 10, 16,
默认以 10 进制处理. 但在 JavaScript 中, 0 起始的数被认为利用 8
进制处理, 0x 的数被认为是用 16 进制来处理. 所以下面的 JavaScript
代码总计错误了.

潜移默化大吗?

大! 很大! 因为这么些通常用来总计价格, 一旦价格错误, 对用户来说, 这是误导,
而一个好的网站不应有出现这种误导用户的. 下边的 DEMO 中, 没有点名进制.
大家可以在数码框中输入一个以 0 开首的数字, 在点击统计按钮,
算出来的数值将比预料中的小片段, 或者小很多 (如: 8 进制中从不 019
这般的数值, 所以数值变成了 1, 9 被忽视掉).
一直不为 parseInt 函数指定进制的
DEMO

怎么样修改?

眼前说过, 有两个参数, 第二个参数能够指定总计使用的进制.

从而我们可以将前方有题目标那段 JavaScript 代码改写为下面的代码.

这么处理的话, 我们再重写一些前方的 DEMO, 如下:
为 parseInt 函数指定进制为 10 的
DEMO

纪事了, 在 JavaScript 上采取 parseInt 方法时要带上进制参数.


http://www.w3school.com.cn/jsref/jsref\_parseInt.asp

JavaScript parseInt() 函数

JavaScript
全局对象

概念和用法

parseInt() 函数可分析一个字符串,并再次来到一个整数。

语法

parseInt(string, radix)
参数 描述
string 必需。要被解析的字符串。
radix

可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

返回值

归来解析后的数字。

说明

当参数 radix 的值为 0,或从不安装该参数时,parseInt() 会按照 string
来判断数字的基数。

举例,如果 string 以 “0x” 开头,parseInt() 会把 string
的另外部分解析为十六进制的整数。假如 string 以 0 先导,那么 ECMAScript
v3 允许 parseInt()的一个实现把今后的字符解析为八进制或十六进制的数字。即便 string 以 1 ~
9 的数字最先,parseInt() 将把它解析为十进制的平头。

提拔和注释

注脚:唯有字符串中的第一个数字会被再次回到。

诠释:初叶和终极的空格是允许的。

唤醒:尽管字符串的率先个字符不可以被转换为数字,那么 parseFloat() 会重临NaN。

实例

在本例中,我们将动用 parseInt() 来分析不同的字符串:

parseInt("10");            //返回 10
parseInt("19",10);      //返回 19 (10+9)
parseInt("11",2);       //返回 3 (2+1)
parseInt("17",8);       //返回 15 (8+7)
parseInt("1f",16);      //返回 31 (16+15)
parseInt("010");        //未定:返回 10 或 8

TIY

parseInt()
什么利用 parseInt() 来分析不同的字符串。

JavaScript
全局对象