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