在js中,會(huì)經(jīng)常的遇到浮點(diǎn)數(shù)精度問(wèn)題(0.1+0.2),我們都知道是因?yàn)檗D(zhuǎn)換成二進(jìn)制的時(shí)候產(chǎn)生無(wú)限循環(huán)小數(shù),而js的尾數(shù)部分只能保存52位,出現(xiàn)截取取一舍零造成的;但是現(xiàn)在深挖一下:、const s = 0.1console.log(s)//s=0.1 console.log(0.1+5)//5.1、上述代碼,s確準(zhǔn)確的等于0.1,并沒(méi)有出現(xiàn)精度不準(zhǔn)確的情況,資料上說(shuō)明,超過(guò)16位會(huì)使用toPrecision(16) 進(jìn)行運(yùn)算,進(jìn)而會(huì)有 s=0.1的情況,那為什么0.1+0.2 不會(huì)做toPrecision的運(yùn)算呢?而對(duì)于第二種情況,我的猜測(cè)是對(duì)于整數(shù)和小數(shù)的相加,js會(huì)做toPrecision(m+1),m為小數(shù)的10的-m次方;以上是我在研究js精度問(wèn)題產(chǎn)生的兩個(gè)問(wèn)題,能夠查到的博客上都對(duì)這兩個(gè)方面沒(méi)有說(shuō)明,希望曉得js精度處理機(jī)制的大神幫助解答一下,謝謝大家!補(bǔ)充:對(duì)于toPrecision(m)方法什么時(shí)候調(diào)用,更重要的是 m 的值是如何確定的?
添加回答
舉報(bào)
0/150
提交
取消