javascript之对系统的toFixed()方法的修正

yizhihongxing

前言:

在 Javascript 中,toFixed() 方法可以将一个数字保留指定位数的小数。但是这个方法存在一个问题,对于某些数字在小数部分保留时可能会出现精度错误。本文将介绍如何修正toFixed()方法在某些情况下出现的精度错误。

修正toFixed()方法的代码:

我们将修正后的代码命名为toFixedNew()方法。toFixedNew()方法可以解决toFixed()在某些情况下的精度问题。下面是代码实现:

Number.prototype.toFixedNew = function(n){
    const b = this.toLocaleString()
    const c = b.split('.')[1] || ''

     if (n == null || n == 0) {
        return parseInt(b);
     }

     return parseInt(this * Math.pow(10,n)) / Math.pow(10,n) + ( c.length > n ? `.${c.slice(0,n)}` : c ? `.${c}` : Array(n+1).join('0') )
}

代码实现的思路:

  • 首先,将数值转化为本地形式,包括小数点,千分位分隔符等;
  • 然后,将小数点后的数字字符进行处理得到小数部分;
  • 若保留小数位数为 null 或者为 0,则返回整数;
  • 否则,返回修正后的结果:将原数乘以10的n次方,取整后再除以10的n次方,最后将小数部分根据保留小数位数进行处理,同时考虑小数位数不够的情况。

示例说明:

下面分两个示例说明toFixedNew()方法的使用:

例1:将 0.1 和 0.2 相加后保留一位小数的结果

const a = 0.1, b = 0.2;
let c = (a + b).toFixedNew(1);
console.log(c); //0.3

上述代码输出结果正确。

例2:保留 2 位小数

const a = 0.615, b = 10.235, c = 0.125;
console.log(a.toFixedNew(2)); //0.62
console.log(b.toFixedNew(2)); //10.24
console.log(c.toFixedNew(2)); //0.13

上述代码输出结果可以看出,修正后的方法得出的保留指定位数的小数正确无误。

结束语:

通过自定义一个toFixedNew()方法可以避免toFixed()方法在某些情况下存在的精度问题。以上代码仅为一种修正方案,读者可以结合实际情况进行修改和使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript之对系统的toFixed()方法的修正 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • PHP的Yii框架的基本使用示例

    下面是关于“PHP的Yii框架的基本使用示例”的完整攻略。 一、什么是Yii框架? Yii框架是一个高性能的、基于组件的PHP框架,它具有良好的扩展性和灵活性,是一个适用于Web应用开发的框架。Yii框架可以让开发者在减少重复性工作的同时,保持代码的规范和可读性。 二、Yii框架的安装 首先,我们需要安装Yii框架,可以通过Composer来进行安装,执行以…

    JavaScript 2023年6月11日
    00
  • 详解js中class的多种函数封装方法

    下面是“详解js中class的多种函数封装方法”的完整攻略。 什么是类(class)? 类是JavaScript中的一种面向对象的编程范式,是ES6中增加的新特性,能够更好地封装数据和行为。它是复杂对象的一种抽象描述,用于描述具有相同特征(属性)和行为的对象的集合。 类的多种函数封装方法 1. 构造函数封装 通过构造函数实现类的定义和方法的调用。构造函数不需…

    JavaScript 2023年5月27日
    00
  • jQuery 动画与停止动画效果实例详解

    jQuery 动画与停止动画效果实例详解 本次攻略将会重点讲解jQuery中动画效果的运用与实现,同时还会包括如何停止动画效果。 jQuery 动画的基本使用方法 我们知道,jQuery提供了许多丰富的动画方法,如animate()、fadeIn()、fadeOut()、slideDown()、slideUp()等等,这里我们以animate()为例进行详细…

    JavaScript 2023年6月10日
    00
  • 如何使JavaScript休眠或等待

    当JavaScript需要在一定时间内暂停执行或等待某些操作完成后再执行下一步操作时,可以使用JavaScript的休眠或等待实现方式。以下是具体的实现过程: 1.使用setTimeout函数实现休眠 使用setTimeout函数可以在指定的时间后执行指定的JavaScript代码,于是,在需要休眠一段时间后再执行代码的时候,可以将要执行的代码以回调函数的形…

    JavaScript 2023年5月27日
    00
  • JavaScript优雅处理对象的6种方法

    JavaScript优雅处理对象的6种方法 在 JavaScript 开发中,绝大部分情况下数据都会以对象的形式存在,因此如何优雅处理对象是我们非常重要的一项技能。在下面的内容中,我们将介绍处理对象的6种优雅方法。 1. 使用解构赋值 在 JavaScript 中,我们可以使用解构赋值的方法来方便地提取对象中的属性值。这种方法可以让代码更加简洁易读,同时也可…

    JavaScript 2023年5月27日
    00
  • JS中类或对象的定义说明

    JS中类或对象的定义说明是面向对象编程最基本的操作之一。在JS中,我们可以使用class关键字来定义一个类,也可以使用对象字面量的方式定义一个对象。 类的定义 使用class关键字来定义一个类,包括类名、属性和方法的定义。下面是一个简单的示例代码: class Person { constructor(name, age) { this.name = nam…

    JavaScript 2023年5月27日
    00
  • 详解微信小程序开发聊天室—实时聊天,支持图片预览

    详解微信小程序开发聊天室——实时聊天,支持图片预览 背景 微信小程序是一种轻巧的应用程序,用户可以使用它们在微信中进行各种任务。微信小程序可以从主屏幕、公众号信息、小程序搜索结果、分享链接等任何场景下进入。开发微信小程序可以使用前端开发技术,比如HTML、CSS和JavaScript。 本篇攻略将详细讲解如何开发一个实时聊天室,支持图片预览的微信小程序应用程…

    JavaScript 2023年6月11日
    00
  • JavaScript格式化日期时间的方法和自定义格式化函数示例

    JavaScript格式化日期时间的方法和自定义格式化函数示例 在JavaScript中,格式化日期时间是一个常见的需求。本文将介绍在JavaScript中格式化日期时间的方法和自定义格式化函数示例。 提供内置的日期时间格式化方法 在JavaScript中,可以使用Date对象提供的内置方法来格式化日期时间。以下是一些常见的方法及其描述: getFullYe…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部