我愛撸碼,撸碼使我感到快樂!
大家好,我是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;
}