2 回答

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
進(jìn)行*100運(yùn)算的時(shí)候,toFixed()得到的string 已經(jīng)隱式轉(zhuǎn)換變成number。
然后二進(jìn)制數(shù)不能精確表示0.0028 (1.01101111..._2×2^-9),也不能精確表示0.28 (0.010001111010111..._2x2^0)所以只好截取掉一部分。
這樣應(yīng)該可以(100*0.002812).toFixed(2)

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
浮點(diǎn)數(shù)不能精確表示,是所有編程語言共有的問題。因?yàn)楦↑c(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部也是用二進(jìn)制存儲(chǔ)的。
所以一位小數(shù),比如0.1-0.9
中只有0.5
是可以精確表示的,因?yàn)?code>0.5是1的一半。
所以一般涉及金融行業(yè)和錢相關(guān)的敏感數(shù)據(jù)存儲(chǔ),幾分錢,幾毛錢都是用整數(shù)來存的。
推薦一篇博客吧,題主有興趣可以看一看~。代碼之謎(五)- 浮點(diǎn)數(shù)(誰偷了你的精度?)
添加回答
舉報(bào)