1. 程式人生 > >js 浮點數計算誤差解決方法

js 浮點數計算誤差解決方法

eg:一個整數*一個小數出現的結果是

計算機程式語言裡浮點數計算會存在精度丟失問題(或稱舍入誤差),其根本原因是二進位制和實現位數限制有些數無法有限表示
 * 以下是十進位制小數對應的二進位制表示
 *      0.1 >> 0.0001 1001 1001 1001…(1001無限迴圈)
 *      0.2 >> 0.0011 0011 0011 0011…(0011無限迴圈)
 * 計算機裡每種資料型別的儲存是一個有限寬度,比如 JavaScript 使用 64 位儲存數字型別,因此超出的會捨去。捨去的部分就是精度丟失的部分。
核心方法:實現加減乘除運算,確保不丟失精度
     * 思路:把小數放大為整數(乘),進行算術運算,再縮小為小數(除)