JavaScript 的乘法

JavaScript 的乘法需要用到乘法運算子 (*) 來處理想個數字的相乘,與加法時不一樣,JavaScript 在執行乘法時,就算是把數字用字串的方式表示,同樣可以進行相乘,不過有個問題存在,JavaScript 的乘法存在一個 bug,就是在處理小數(浮點數)相乘的時候會出錯,這個部分在範例後再來探討,先研究 JavaScrip 的乘法基本規則。

JavaScript 的乘法語法規則
result = number1 * number2;
JavaScript 的乘法規則寫法與平時在寫數學的乘法沒什麼兩樣,兩個數字用乘法運算子(*)串在一起即可相乘。

JavaScript 的乘法運算範例
<script type="text/javascript">
 x=3*6;
 document.write(x);
 document.write("<br />");

 x="3"*"6";
 document.write(x);
 document.write("<br />");

 x="3"*6;
 document.write(x);
</script>
顯示結果
18
18
18
範例共有三組 JavaScript 的乘法運算,主要的差異僅在變數 x 的數字表示方式,第一組全部都是數字表示,第二組與第三組都有用字串來表示,不過 JavaScript 都可以順利的將數字相乘後的結果算出來。

JavaScript 的乘法處理小數相乘的錯誤處理
<script type="text/javascript">
 x=3.2*6;
 document.write(x);
 document.write("<br />");

 x=(3.2*10)*6/10;
 document.write(x);
 document.write("<br />");

 x=3.2*10*6/10;
 document.write(x);
 document.write("<br />");
</script>
顯示結果
19.200000000000003
19.2
19.2
看到奇怪的地方了嗎?這就是第一段中提到的 JavaScript 的乘法 bug,第一組的 3.2*6 怎麼會變成一串「19.200000000000003」這樣的結果?既然是 bug,那我們就不多做解釋,重點擺在如何解決這個問題,各位可以看到第二組與第三組就是解決方案,我們先將小數(浮點數)3.2 乘以 10,讓它變成整數 32,最後除以 10,運算式中的那個斜線(/)是除的意思。

為什麼要這樣處理?因為 JavaScript 的乘法在處理整數的時候沒有 bug,所以遇到小數出現的時候,我們就先把小數變成整數,再讓 JavaScript 去做乘法的動作,這個 bug 什麼時候才會修好,我們也不知道,就只能先這樣囉!

JavaScript 的數字運算比起 PHP 麻煩許多,因為字串的問題以及小數點的問題,除了乘法外,其他的如除法、加法、減法都建議仔細的研究一下,以免誤以為跟 PHP 一樣單純,結果跑出錯誤的答案。

JavaScript 其它運算
© Copyright webtech.tw Since 2010