最近做一些算賬問題吗铐,浮點(diǎn)數(shù)方面會出現(xiàn)錯誤,究其原因毫缆,JS對于number類型唯竹,在四則運(yùn)算或調(diào)用toFixed這樣的方法時,實(shí)際是使用的二進(jìn)制形式進(jìn)行計算苦丁,即計算的數(shù)值并非看到的十進(jìn)制數(shù)值浸颓,所以結(jié)果總是不準(zhǔn)確。
處理這類問題旺拉,一個方法是將小數(shù)全部倍數(shù)到整數(shù)产上,再縮小回小數(shù),但在倍數(shù)化整數(shù)過程中(依然是四則運(yùn)算)依然會出現(xiàn)精度錯誤蛾狗,所以這種方法依然不準(zhǔn)確晋涣。
總的來說,直接用浮點(diǎn)數(shù)在四則運(yùn)算或toFiexed時都會出錯沉桌,所以最徹底的方法是谢鹊,將浮點(diǎn)數(shù)轉(zhuǎn)換成字符串算吩,記錄小數(shù)點(diǎn)位置,去掉小數(shù)點(diǎn)佃扼,轉(zhuǎn)換成整形偎巢,再用整形計算,計算結(jié)果轉(zhuǎn)字符串兼耀,將小數(shù)點(diǎn)寫回來压昼,最后轉(zhuǎn)成浮點(diǎn)數(shù)。這樣無論四則運(yùn)算還是四舍五入瘤运,都不會精度丟失窍霞。