decimal.js的简单封装

js的计算有精度问题,在业务处理中总是会出现莫名其妙的数据,在这里我们使用decimal.js解决计算精度问题。
然而decimal.js直接使用如果多个值相加(或相减)会十分的麻烦,所以针对全是加/减/乘/除某一项的操作做了简单的封装。

1.npm安装decimal.js

$ npm install --save decimal.js

or

$ npm add decimal.js

2.在common文件夹中创建一个js的文件

我喜欢放在common中,大家随意。。。

3.在js文件中引入decimal.js并开始简单的封装

import { Decimal } from "decimal.js";
// args第一位为被操作数据

//加法
function add(...args) {
    let result = new Decimal(args[0]);
    for (let i = 1; i < args.length; i++) {
        result = result.add(new Decimal(args[i]));
    }
    return result.toNumber();
}
//减法
function sub(...args) {
    let result = new Decimal(args[0]);
    for (let i = 1; i < args.length; i++) {
        result = result.sub(new Decimal(args[i]));
    }
    return result.toNumber();
}
//乘法
function mul(...args) {
    let result = new Decimal(args[0]);
    for (let i = 1; i < args.length; i++) {
        result = result.mul(new Decimal(args[i]));
    }
    return result.toNumber();
}
//除法
function div(...args) {
    let result = new Decimal(args[0]);
    for (let i = 1; i < args.length; i++) {
        result = result.div(new Decimal(args[i]));
    }
    return result.toNumber();
}

export default {
    add,
    sub,
    mul,
    div
};

4.使用

(1)全局使用,在main.js引入封装的js文件并挂到vue上

import decimal from "./common/decimal";
Vue.prototype.decimal = decimal;

其他页面使用只需要

let a = this.decimal.add(1,2,3,4);
console.log(a); //10

(2)页面单独引入使用

import decimal from "./common/decimal";

let a = decimal.add(1,2,3,4);
console.log(a); //10

大概就这样了,这只是简单的进行封装,如果有复杂的使用,如a-b+c*d/e这种,大家可以根据业务进行封装。
以上,如有啥问题或更好的想法请指教。^ ^

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 首先,当我们编写代码时,不通过模块化的思想想要引入一个js,通常是在html文件中创建一个script标签,...
    zouCode阅读 2,385评论 0 1
  • 编写css是前端工作中,一项普通而又频繁的劳动,由于css并不是一门语言,所以在程序设计上显得有些简陋。对于小型项...
    Jack_Lo阅读 5,697评论 15 39
  • 行走在人世间,有着自己的亲情爱情友情。每个人内心都有所希冀,有的人内心淤积少。更容易把想法变成行动,相对来...
    生活的馈赠阅读 480评论 3 18
  • “一名推销员一觉醒来发现自己变成了甲虫,他极力想去同亲人联络感情,但都以失败告终,最终被世界遗弃,孤独死去。” 这...
    自习女孩冲鸭阅读 2,363评论 0 2
  • 特工以及商业间谍们为什么打生打死的获取情报,国家以及很多机构为了零点几秒的信息超前愿意花费巨资的投入,情报就是生命...
    尘世知行者阅读 298评论 0 4