1. 程式人生 > >移動端小數計算不正確問題

移動端小數計算不正確問題

移動端小數計算不正確問題

最近在做小程式迭代版本出現了一些新的問題:

  • 小數計算問題

由於顯示1的時候其實並不是1而是1.0000几几幾,所以加減是會出問題,比如我們的折扣價格是199.00,後臺傳的是原價和折扣,計算就會出問題


解:(下面是網搜的解決方案)

function decNum(a) {/*獲取小數位數*/
  var r = 0;
  a = a.toString();
  if (a.indexOf(".") !== -1) r = a.split(".")[1].length;
  return r;
}
function int(a)
{
/*去除小數點並轉成數值*/ return parseInt(a.toString().replace(".", "")); } function calc(a, b, type) {//加減乘除 var r, da = decNum(a), db = decNum(b), dsum = da + db, dmin = Math.min(da, db), dmax = Math.max(da, db); dsum += dmax - dmin; dsum = Math.pow(10, dsum); dmax = Math.pow(10, dmax); a = int(a); b = int(b); if
(da > db) { b *= Math.pow(10, da - db); } else { a *= Math.pow(10, db - da); } switch (type) { case "add": r = (a + b) / dmax; break; case "subtract": r = (a - b) / dmax; break; case "multiply": r = (a * b) / dsum; break; case "divide"
: r = a / b; break; } return r; } calc(a, b, type)//自己可以試試