当前位置:首页 > JavaScript

js实现tofixed

2026-02-01 05:44:47JavaScript

实现 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();
}

处理边界情况

如果需要更严格的实现(如处理负数、非数字输入等),可以扩展为:

js实现tofixed

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),自定义实现可以避免这些问题。
  • 如果需要更复杂的四舍五入逻辑(如银行家舍入法),需进一步扩展实现。

标签: jstofixed
分享给朋友:

相关文章

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…