對(duì)于開(kāi)發(fā)者而言,或多或少都聽(tīng)前輩們提及過(guò):不要對(duì)浮點(diǎn)數(shù)進(jìn)行比較!
浮點(diǎn)數(shù)存在精度丟失現(xiàn)象
一個(gè)小數(shù)要進(jìn)入計(jì)算機(jī)中要經(jīng)過(guò)幾個(gè)步聚:
Step1:轉(zhuǎn)換為二進(jìn)制
Step2:用二進(jìn)制科學(xué)計(jì)算法表示
Step3:表示成IEEE754形式(幾乎所有編程語(yǔ)言的浮點(diǎn)數(shù)都是采用IEEE標(biāo)準(zhǔn)的)
在第一步和第三步時(shí),都會(huì)存在丟失精度的可能,然后再將兩個(gè)浮點(diǎn)數(shù)進(jìn)行數(shù)學(xué)運(yùn)算,結(jié)果會(huì)更加偏離預(yù)期。
浮點(diǎn)數(shù)精度丟失解決方案
特別是在金融類項(xiàng)目中,不可避免會(huì)出現(xiàn)一些小數(shù),此時(shí)我們絕對(duì)要禁止使用浮點(diǎn)數(shù)來(lái)表示這些小數(shù),而應(yīng)該改為Decimal庫(kù)來(lái)存儲(chǔ)小數(shù)。
以上就是我的觀點(diǎn),對(duì)于這個(gè)問(wèn)題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流~我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),我了解更多科技知識(shí)!