天天看點

JavaScript自定義求和函數

我愛撸碼,撸碼使我感到快樂!

大家好,我是Counter,當看到這個标題到時候是不是感覺很簡單,千萬不要大意哦,你說0.1 + 0.2 = 0.3 ?

有時候計算機并不是我們所說絕對精确,這個時候就要我們手動去幹涉啦。先說說需求,當我們向你自定義的這個函數裡傳入參數,當然這個實參參數你是不能固定死的,因為你永遠不知道使用者會傳入什麼值進來,是以就要進行,相容處理,例如當傳入的不是數字的話,我們就希望,這個不是數字的實參不會影響到,其他是數字的實參,就比如sum(1, 2, “victory”, true, null) 我們就希望傳回的和為 是數字的實參相加,即為3。

好了還是老樣子,先看看效果:

JavaScript自定義求和函數

上代碼:

// 自定義求和函數
        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;
        }