-
計算機(jī)使用二進(jìn)制存儲數(shù)據(jù)- 整數(shù)用二進(jìn)制沒有誤差,如
9在計算機(jī)中表示為1001 -
而有的小數(shù)無法用二進(jìn)制表示,如
0.2用二進(jìn)制表示為1.10011001100....無限循環(huán)下去了- 所以,累加小數(shù)時就會出現(xiàn)誤差
- 這不僅僅是前端javascript會出現(xiàn)這個問題,所有的計算機(jī)語言都這樣
- 整數(shù)用二進(jìn)制沒有誤差,如
-
如果項目中頻繁的要做小數(shù)點的運算,怎么辦?- 要么把小數(shù)點轉(zhuǎn)換成整數(shù) 運算后 再把結(jié)果轉(zhuǎn)換為小數(shù)
- 要么使用第三方庫 https://www.npmjs.com/package/mathjs
個人覺得沒必要太深究為什么小數(shù)用二進(jìn)制表示會一直循環(huán)下去這個問題 這個是計算器很底層的問題 當(dāng)然真的很有興趣可以去了解《松本行弘的程序世界》這本書很適合新手且通熟易懂 但是沒必要太深究下去