js 精度处理

345 阅读1分钟
/*
 * @Description: 保留小数点后几位(不四舍五入)默认两位
 * @param {Float} x 要处理的小数
 * @param {Float} num 保留几位
 */
// 备注:parseFloat、parseInt有问题。parseFloat('1a')==1
function qfyToDecimal(x, num) {
  // var f = parseFloat(x); 
  x = (x + '').trim(); //转成字符串 去空格
  var f = x / 1;
  // num = parseInt(num) || 2;
  num = num / 1 || 2;
  if (isNaN(f) || x === '' || isNaN(num) || num % 1 != 0) {
    console.log('type error!');
    return;
  }
  var divisorNum = Math.pow(10, num)
  var f = Math.round(x * divisorNum) / divisorNum;
  var s = f.toString();
  var rs = s.indexOf('.');
  if (rs < 0) {
    rs = s.length;
    s += '.';
  }
  while (s.length <= rs + num) {
    s += '0';
  }
  return s;
}