在對兩個(gè)float類型的數(shù)據(jù)進(jìn)行四則運(yùn)算的時(shí)候,可能會(huì)導(dǎo)致出現(xiàn)xx.99999999或x.00000001等情況。
例
在上述例子中可以看到,0.55+0.02并不等于0.57,因?yàn)檫@個(gè)結(jié)果在內(nèi)存中其實(shí)是0.579999999或0.570000000001所以并不等于0.57。這個(gè)問題在底層為C的程序中基本都會(huì)出現(xiàn),例如js,python等等
Js例子
Python例子
這種情況會(huì)直接影響到程序的準(zhǔn)確性,此問題在遇到統(tǒng)計(jì)計(jì)算、報(bào)表程序中尤為重要,解決辦法就是用內(nèi)置的四則云算函數(shù)來去計(jì)算,
Php 使用bc函數(shù)庫bcadd bcsub bcmul bcdiv
Js建議使用number.js庫
Python使用decimal模塊來解決
關(guān)鍵詞: