input 只能输入正数和小数及解决小数相加出现多位数情况

433 阅读1分钟

input 只能输入正数和小数

<el-input
  type="number"
  step="0.01"
  min="0"
  @input="valueInput"
  onkeyup="value= value.match(/\d+(\.\d{0,2})?/) ? value.match(/\d+(\.\d{0,2})?/)[0] : ''"
  v-model="value"
  class="interlace"
></el-input>

解决小数相加出现多位数情况

获取到input内的小数后,要实现相加减保留2位小数操作,操作过程中发现出现很多位情况,经查验,这是JavaScript浮点运算的一个bug,我们可以用Number和toFixed处理一下就好

let num = Number(value) + Number(item)
if (!isNaN(parseFloat(num))) {
	num = num.toFixed(2)
}

这样即可直接转换

去掉小数末尾多余的0

parseFloat(num)