我愛擼碼,擼碼使我感到快樂!
大家好,我是Counter,當看到這個標題到時候是不是感覺很簡單,千萬不要大意哦,你說0.1 + 0.2 = 0.3 ?
有時候計算機並不是我們所說絕對精確,這個時候就要我們手動去干涉啦。先說說需求,當我們向你自定義的這個函數里傳入參數,當然這個實參參數你是不能固定死的,因為你永遠不知道用戶會傳入什么值進來,所以就要進行,兼容處理,例如當傳入的不是數字的話,我們就希望,這個不是數字的實參不會影響到,其他是數字的實參,就比如sum(1, 2, “victory”, true, null) 我們就希望返回的和為 是數字的實參相加,即為3。
好了還是老樣子,先看看效果:
// 自定義求和函數 function sum() { // 求出所傳入實參的長度 var len = arguments.length; // 定義一個變量為0 var num = 0; // 遍歷實參每一項 for(var i = 0; i < len; i++) { // 讓實參每一項都相加,如果值為NaN的話,那么就加0,parseInt可以使 例如"111"變為數字111 num += parseFloat(arguments[i]) || 0; } // 因為浮點數的加法不精確,0.1+0.2 = 3? 動手去試試就知道了,所以得到的結果,我們讓它只取小數后兩位,再乘以100 除以100,很有必要,如果此步剩略的話有會出現整數后面還帶着小數后兩位,還是字符串的形式,並且toFixed()方法返回的是字符串的形式 num = num.toFixed(2) * 100 / 100; return num; }