如何使用JavaScript验证数字是否符合两位小数精度要求
校验方案
1. 格式校验(确认输出是严格的两位小数字符串格式)
因为toFixed(2)返回的是字符串类型,你可以用正则表达式匹配规则,确保输出严格符合「整数部分+小数点+刚好两位小数」的格式:
function validateTwoDecimalFormat(str) { // 兼容负数的话可把正则改为 /^-?\d+\.\d{2}$/ return /^\d+\.\d{2}$/.test(str); } // 测试示例 console.log(validateTwoDecimalFormat('1.00')); // true console.log(validateTwoDecimalFormat('2.46')); // true console.log(validateTwoDecimalFormat('2.4')); // false console.log(validateTwoDecimalFormat('2.467')); // false
2. 数值精度校验(确认转换结果符合四舍五入到两位小数的精度要求)
要确认转换后的值和原始值的误差在允许范围内,逻辑是:四舍五入到两位小数的结果,和原始值的差值绝对值必然小于0.005,校验代码如下:
function validateTwoDecimalPrecision(originalNum, convertedStr) { const original = parseFloat(originalNum); const converted = parseFloat(convertedStr); // 额外加Number.EPSILON兼容JS浮点数运算的固有精度误差 return Math.abs(original - converted) < 0.005 + Number.EPSILON; } // 测试示例 console.log(validateTwoDecimalPrecision(1, '1.00')); // true console.log(validateTwoDecimalPrecision(2.457, '2.46')); // true console.log(validateTwoDecimalPrecision(2.454, '2.46')); // false,误差0.006超出允许范围
组合校验方案
实际使用时可以把两个校验逻辑结合,同时验证格式和精度:
function isTwoDecimalValid(originalNum, convertedStr) { return validateTwoDecimalFormat(convertedStr) && validateTwoDecimalPrecision(originalNum, convertedStr); }
内容的提问来源于stack exchange,提问作者Devmix
相关产品推荐
相关产品推荐

