vue解决计算精度问题

1.利用mathjs插件进行计算结果的处理

安装

npm install mathjs --save

局部引入

import * as math from 'mathjs' 

全局挂载

import math from 'mathjs'
Vue.prototype.$math= mathjs 

使用

math.add( a,b ) // 加 a+b
math.subtract( a,b ) //减 a-b
math.divide( a,b ) // 除 a/b
math.multiply( a,b ) // 乘 a*b
math.sqrt(4) // 开方
math.bignumber() // 大数字 BigNumber进行计算要比使用Number进行计算慢得多,但可以任意精度执行。通过使用较高的精度,不太可能发生舍入错误。
math.format()  // 防止输出中出现舍入错误

举例

console.log(0.1 + 0.2) // 0.30000000000000004
// 使用math.js之后
const a= math.format(
  math.add(
    math.bignumber(0.1),math.bignumber(0.2)
  )
)
console.log(a) // 0.3

文档

mathjs中文文档|mathjs js中文教程|解析 | npm中文文档mathjs中文文档|mathjs js中文教程|解析 安装命令:npm i mathjs https://mathjs.org Math.js 是一个广泛的 JavaScript 和 Node.js 数学库。它具有灵活的表达式解析器,支持符号计算,带有大量内置函数和常量,并提供了一个集成的解决方案来处理不同的数据类型,如数字、大数、复数、分数、单位和矩阵。功能强大且易于使用。 特征 支持icon-default.png?t=N7T8http://www.npmdoc.org/mathjszhongwenwendangmathjs-jszhongwenjiaochengjiexi.html

2.扩大运算范围

将浮点数转化为整数,相乘或相加后再除回去,可以避免小数位精度的影响 

let num1 = 0.1;
let num2 = 0.2;
let sum = (num1 * 10 + num2 * 10) / 10;
console.log(sum); // 0.3

法2 

// num 是数值,decimals是精度几位
function round(num, decimals) {
  const factor = Math.pow(10, decimals);   // 直接使用Math.pow(a,3)即可,即等于求a的3次方
  return Math.round(num * factor) / factor;   //Math.round()函数返回给定数字的值,四舍五入到最接近的整数
}

const a = 0.1;
const b = 0.2;

console.log(round(a + b, 1)); // 0.3

3.toFixed()

//可以传你要的小数几位
let num = 2
const a = 0.1;
const b = 0.2;
console.log((a+b).toFixed(num)); // 0.30

你可能感兴趣的:(代码,vue.js,前端,javascript)