關於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

  
javascript

查找了JS的文檔後發現這個問題發生的緣由是前面的"0",parseInt方法有一個可選參數來表示數字的進制,以"0"做爲首字符的字符串會被JS識別爲八進制數並將沒有指定數字進制參數的參數值默認爲8,從而以八進制來解析字符串,而"08"和"09"都不是合法的八進制數,因此被解析爲0。</P> html

實際上,這是個不注意細節引發的問題,顯式設置進制參數的parseInt根本不會出現這個問題,parseInt("08",10)或parseInt("09",10)都能返回正確的數值。另外,parseFloat不會存在這個問題
java

相關文章
相關標籤/搜索