JavaScript對數(shù)值有范圍的限制,限制如下:
如果想要對一個超大的整數(shù)(> Number.MAX_SAFE_INTEGER)進行加法運算,但是又想輸出一般形式,那么使用 + 是無法達到的,一旦數(shù)字超過 Number.MAX_SAFE_INTEGER 數(shù)字會被立即轉(zhuǎn)換為科學(xué)計數(shù)法,并且數(shù)字精度相比以前將會有誤差。
實現(xiàn)一個算法進行大數(shù)的相加:
其主要的思路如下:
首先用字符串的方式來保存大數(shù),這樣數(shù)字在數(shù)學(xué)表示上就不會發(fā)生變化
初始化res,temp來保存中間的計算結(jié)果,并將兩個字符串轉(zhuǎn)化為數(shù)組,以便進行每一位的加法運算
將兩個數(shù)組的對應(yīng)的位進行相加,兩個數(shù)相加的結(jié)果可能大于10,所以可能要僅為,對10進行取余操作,將結(jié)果保存在當(dāng)前位
判斷當(dāng)前位是否大于9,也就是是否會進位,若是則將temp賦值為true,因為在加法運算中,true會自動隱式轉(zhuǎn)化為1,以便于下一次相加
重復(fù)上述操作,直至計算結(jié)束