js实现tofixed
实现 toFixed 方法
JavaScript 中的 toFixed 方法用于将数字转换为字符串,保留指定的小数位数。以下是原生 toFixed 的实现原理及自定义实现方式。
原生 toFixed 的用法
let num = 123.456;
console.log(num.toFixed(2)); // 输出 "123.46"
自定义 toFixed 实现
以下是一个自定义的 toFixed 实现,解决原生方法在某些情况下的精度问题(如四舍五入不准确):
function toFixed(number, precision) {
const power = Math.pow(10, precision);
return (Math.round(number * power) / power).toString();
}
处理边界情况
如果需要更严格的实现(如处理负数、非数字输入等),可以扩展为:
function toFixed(number, precision) {
if (typeof number !== 'number' || isNaN(number)) {
throw new TypeError('Input must be a valid number');
}
const power = Math.pow(10, precision);
const rounded = Math.round(number * power) / power;
// 处理小数点后补零的情况
const parts = rounded.toString().split('.');
if (parts.length === 1) {
parts.push('0'.repeat(precision));
} else if (parts[1].length < precision) {
parts[1] = parts[1] + '0'.repeat(precision - parts[1].length);
}
return parts.join('.');
}
示例测试
console.log(toFixed(123.456, 2)); // "123.46"
console.log(toFixed(123.4, 2)); // "123.40"
console.log(toFixed(-123.456, 2)); // "-123.46"
注意事项
- 原生
toFixed在某些浏览器中可能存在精度问题(如 IE),自定义实现可以避免这些问题。 - 如果需要更复杂的四舍五入逻辑(如银行家舍入法),需进一步扩展实现。







