js实现tofixed
JavaScript 实现 toFixed
JavaScript 中的 toFixed() 方法用于将数字转换为字符串,保留指定的小数位数。以下是实现 toFixed 功能的几种方法。
原生 toFixed 方法
直接使用 JavaScript 提供的原生方法:
let num = 123.456789;
let fixedNum = num.toFixed(2); // 返回 "123.46"
自定义实现 toFixed
如果需要手动实现类似功能,可以通过以下方式:
function toFixed(number, precision) {
const factor = Math.pow(10, precision);
return Math.round(number * factor) / factor;
}
let num = 123.456789;
let fixedNum = toFixed(num, 2); // 返回 123.46
处理四舍五入问题
原生 toFixed 可能存在四舍五入不准确的问题,可以通过以下方式优化:
function accurateToFixed(number, precision) {
const str = number.toString();
const decimalIndex = str.indexOf('.');
if (decimalIndex === -1) return number.toFixed(precision);
const decimalPart = str.slice(decimalIndex + 1);
if (decimalPart.length <= precision) return number.toFixed(precision);
const factor = Math.pow(10, precision);
const rounded = Math.round(parseFloat((number * factor).toPrecision(15))) / factor;
return rounded.toFixed(precision);
}
let num = 1.005;
let fixedNum = accurateToFixed(num, 2); // 返回 "1.01"
处理边界情况
处理负数和大数字的情况:
function safeToFixed(number, precision) {
if (isNaN(number) || !isFinite(number)) return number.toString();
const isNegative = number < 0;
const absoluteValue = Math.abs(number);
const factor = Math.pow(10, precision);
const rounded = Math.round(absoluteValue * factor) / factor;
return (isNegative ? '-' : '') + rounded.toFixed(precision);
}
let num = -123.456789;
let fixedNum = safeToFixed(num, 2); // 返回 "-123.46"
格式化输出
如果需要格式化输出为特定格式(如千分位分隔符):

function formatWithCommas(number, precision) {
const fixed = number.toFixed(precision);
const parts = fixed.split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return parts.join('.');
}
let num = 1234567.891;
let formattedNum = formatWithCommas(num, 2); // 返回 "1,234,567.89"






