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