需求:金额字段要求只能输入两位且直接进行截断
在vue项目开发中,某一个金额字段保留到小数点儿后两位(要求直接截断,不可进行四舍五入),最大999999999.99。
代码实现如下:
<el-input-number v-model="oilCost" placeholder="请输入(元)" :step="0.1" :max="999999999.99" controls-position="right" @blur="handleBlur" />
在handleBlur事件中:
第一种:借助Math.trunc方法
const handleBlur = (value: number) => {return Math.trunc(value * 100) / 100;
}
第二种:将数字转为string类型,进行截断
const handleBlur = (value: string) => {const numStr = value.toString();const dotIndex = numStr.indexOf('.');if (dotIndex === -1) {return value;}return Number(numStr.slice(0, dotIndex + 3));
}
该需求涉及JavaScript数字精度问题。第一种实现方式在某些数字中,会出现问题,如144.42会变成144.41等;建议采用第二种方式实现。