javascript中做減法時,出現小數位增加bug
地址:http://www.iteye.com/problems/92347
這個bug是js固有的,浮點數精度不準,你可以用下面方法來解決,思路是先放大,求和、差、積等運算後再縮小。
如:
//加法函式,用來得到精確的加法結果
//說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函式返回較為精確的加法結果。
//呼叫:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精確結果
function accAdd(arg1, arg2) {
var r1, r2, m;
try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
m = Math.pow(10, Math.max(r1, r2))
return (arg1 * m + arg2 * m) / m
}
//給Number型別增加一個add方法,呼叫起來更加方便。
Number.prototype.add = function(arg) {
return accAdd(arg, this);
}
//減法函式,用來得到精確的減法結果
//說明:javascript的減法結果會有誤差,在兩個浮點數相減的時候會比較明顯。這個函式返回較為精確的加法結果。
//呼叫:accSub(arg1,arg2)
//返回值:arg1減去arg2的精確結果
function accSub(arg1, arg2) {
var r1, r2, m, n;
try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
m = Math.pow(10, Math.max(r1, r2));
n = (r1 >= r2) ? r1 : r2;
return ((arg1 * m - arg2 * m) / m).toFixed(n);
}
//給Number型別增加一個sub方法,呼叫起來更加方便。
Number.prototype.sub = function(arg) {
return accSub(arg, this);
}
相關文章
- 用C#實現二進位制的減法(包括二進位制小數)C#
- 做減法
- javascript如何實現保留兩位小數JavaScript
- laravel欄位減少增加Laravel
- [BUG反饋]模型增加欄位BUG模型
- 如何用位運算實現整數的加減法
- JavaScript保留兩位或者其他位數小數JavaScript
- javascript 保留小數位 (toFixed方法)JavaScript
- JavaScript浮點數保留兩位小數JavaScript
- JavaScript - 減法運算子JavaScript
- javascript保留小數點後兩位JavaScript
- Javascript 保留幾位小數的方法JavaScript
- N位二進位制數加減法運算圖靈機圖靈
- sql server 中對小數保留兩位小數SQLServer
- 減小時間複雜度——尤拉的37%法則時間複雜度
- javascript 日期 增加天數JavaScript
- Oralce中設定小數點位數
- PHP日期加減月數,天數,週數,小時,分,秒等等PHP
- Antd中InputNumber元件數字限制小數位數元件
- 十六進位制減法計算
- SAP中的小資料位數
- shell中如何處理兩個數的減法
- js精度小數位數正規表示式判斷 - JavaScriptJSJavaScript
- js如何實現數字保留小數點後兩位小數JS
- ACM 分數加減法ACM
- 數學-錯位相減法
- 程式碼整潔之道之做減法
- 驗證整數、小數、實數、有效位小數最簡單JavaScript正規表示式JavaScript
- JavaScript中任意兩個數加減的解決方案JavaScript
- [BUG反饋]模型增加欄位後field_sort欄位未更新模型
- JavaScript加減乘數運算JavaScript
- SD--如何在輸出控制中增加自定義欄位
- 【AIX 命令學習】增加/減小邏輯卷的大小AI
- JavaScript 天小時分鐘和秒倒數計時JavaScript
- JavaScript 原生 小案例 秒殺時鐘倒數計時JavaScript
- javascript小時、分鐘和秒倒數計時效果JavaScript
- Android&Java保留小數位數的幾種寫法AndroidJava
- JavaScript 原生 小案例 60秒倒數計時JavaScript