当前位置:首页 > JavaScript

js实现tofixed

2026-03-14 04:04:50JavaScript

实现 toFixed 方法

JavaScript 中的 toFixed() 方法用于将数字转换为字符串,保留指定的小数位数。以下是一个自定义实现:

function toFixed(number, precision) {
    const multiplier = Math.pow(10, precision);
    return Math.round(number * multiplier) / multiplier;
}

处理边界情况

上述基础实现可能无法处理所有情况,比如负数或科学计数法。以下是更完整的实现:

function toFixed(number, precision) {
    if (isNaN(number) || isNaN(precision)) return 'NaN';
    if (precision < 0 || precision > 20) throw new RangeError('Precision must be between 0 and 20');

    const numStr = number.toString();
    if (numStr.indexOf('e') !== -1) {
        return parseFloat(numStr).toFixed(precision);
    }

    const decimalIndex = numStr.indexOf('.');
    if (decimalIndex === -1) {
        return numStr + (precision > 0 ? '.' + '0'.repeat(precision) : '');
    }

    const integerPart = numStr.substring(0, decimalIndex);
    let decimalPart = numStr.substring(decimalIndex + 1);

    if (decimalPart.length < precision) {
        decimalPart += '0'.repeat(precision - decimalPart.length);
    } else {
        decimalPart = decimalPart.substring(0, precision);
    }

    return integerPart + (precision > 0 ? '.' + decimalPart : '');
}

四舍五入实现

如果需要精确的四舍五入,可以使用以下方法:

js实现tofixed

function toFixed(number, precision) {
    const shift = function(num, exponent) {
        const numArray = ('' + num).split('e');
        return +(numArray[0] + 'e' + (numArray[1] ? (+numArray[1] + exponent) : exponent));
    };

    return shift(Math.round(shift(number, +precision)), -precision).toFixed(precision);
}

注意事项

  • 原生 toFixed() 在不同浏览器中可能有不同的舍入行为
  • 大数字可能导致精度问题
  • 负数的处理需要特别小心
  • 科学计数法的数字需要转换

这些实现提供了不同级别的功能覆盖,可以根据具体需求选择适合的方案。

标签: jstofixed
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…