首页 > 解决方案 > 如何正确检查整数(未输入小数的值)

问题描述

我正在尝试将数字格式化如下:
如果数字中没有小数,则返回 4 个小数(即 100 将是 100.0000,0 将是 0.0000)如果有小数,则返回到最后一个非 0 小数(即 100.000110000 将是 100.00011 )

下面是我的擦洗功能,我将要格式化的值加载到 domtemp.value

检查 0 位小数(或输入的整数)时,问题出在下面的“else if”中。我从来没有到达那里,因为无论我是否通过 100 或 100.0011,结果似乎总是 0。任何想法我在检查整数时可能做错了什么?

function scrubAsFound() {
    var i;
    var length = 4;
        
    for (i = 1; i <= length; i++) {
        domtemp = document.querySelector('#equipment_asfound' + i);
       
        
        // Check for empty values 
        if (isNaN(domtemp.value) || (!domtemp.value || 0 === domtemp.value.length))
        { 
            domtemp.value = 0.0000;
            domtemp.value = Number(domtemp.value).toFixed(4);
        }
        else if (Number(domtemp.value) % 1 != 0)
        { 
             domtemp.value = Number(domtemp.value).toFixed(4);
        }
        else 
        { 
            domtemp.value =  parseFloat(formatAsFound(domtemp.value));
        }
        
    }
}

标签: javascript

解决方案


function formatNumber(val) {
  let numberVal = Number(val)
  if (isNaN(numberVal)) {
    numberVal = 0
  }

  const intVal = parseInt(numberVal)
  return intVal + '.' + (numberVal + '').substr((intVal + '').length + 1).padEnd(4, '0')

}

console.log(formatNumber('abc') === '0.0000')
console.log(formatNumber('') === '0.0000')
console.log(formatNumber(0) === '0.0000')
console.log(formatNumber(2) === '2.0000')
console.log(formatNumber(2.1) === '2.1000')
console.log(formatNumber(2.00011) === '2.00011')


推荐阅读