javascript中的parseInt函数

时间:2012-02-08 09:55:49

标签: javascript html

当我运行此函数时,该值显示为26.我想知道系统使用什么计算以及为什么评估为26。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>parseint</title>

<script type="text/javascript">

var par= "1a";

alert (parseInt(par,16))

</script>

</head>

<body>


</body>
</html>

6 个答案:

答案 0 :(得分:8)

parseInt的第二个参数是基数。它显示了使用的基础。基数16是十六进制,基数16中的1a在基数10(十进制)中是26

这就是使用parseInt时始终指定基数的重要性。在这种情况下,不提供基数将导致值1,因为它试图解析基数10中的数字,获取字符a,放弃并返回到目前为止找到的数字:

parseInt("1a"); //1
parseInt("1a", 10); //1 (same as above)
parseInt("1a", 16); //26

但是,如果数字以字符0x0X开头,则假定它是十六进制数,并且您可以省略基数(尽管建议始终通过基数以避免不必要的副作用):

parseInt("0x1a"); //26

答案 1 :(得分:3)

parseInt的第二个参数是radix,您已指定1a表示基数为16(或Hexadecimal)的整数。

快速查看任何旧版hexadecimal to decimal lookup table都会显示十六进制1a确实等效于十进制26

答案 2 :(得分:1)

看起来像是将1a从十六进制转换为十进制

答案 3 :(得分:1)

它只是基本的16(你明确要求)。

16s列中有一个1(因此它是16),而1s列中有一个a(因此它是10)。 10 + 16是26。

答案 4 :(得分:1)

您正在将1A解析为16的基数。 所以这就是

1 * 16^1 + 10 * 16^0 = 16 + 10 = 26

答案 5 :(得分:0)

1a是26的十六进制。您经常在HTML颜色中遇到像“1a”或“ff”这样的值。 “ff”是16x16或256,是最高的两位十六进制值。

有关详细信息,请参阅http://en.wikipedia.org/wiki/Hexadecimal