我是靠谱客的博主 淡然大树,这篇文章主要介绍vue加减乘除计算后精度缺失显示为科学计数,现在分享给大家,希望可以做个参考。

前端在操作加减乘除计算时,经常会出现精度缺失问题,有时会显示为科学计数的样式。这里将记录如何确保在计算后精度不会缺失,并且将科学计数转换为小数。

1.下载相关依赖 :   npm run mathjs

2.在本项目中新建文件封装:

 具体代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
let $math = require('mathjs'); // import $math from 'mathjs' const math = { //加法 add() { return comp('add', arguments) }, //减法 subtract() { return comp('subtract', arguments) }, // 乘法 multiply() { return comp('multiply', arguments) }, // 除法 divide() { return comp('divide', arguments) }, } function comp(_func, args) { let t = $math.chain($math.bignumber(args[0])); for (let i=1; i<args.length; i++) { t = t[_func]($math.bignumber(args[i])) } // 防止超过6位使用科学计数法 return parseFloat(t.done()) } export default math;

3. 在文件中引用:

 4. 具体操作:

复制代码
1
2
//举例:减法 let num1 = math.subtract(num2,num3);

此时已经确保两数相减时不会出现精度丢失问题,但是计算结果小数位数过长时还是会显示为科学计数,下面方法则是用于将科学计数显示为小数:

复制代码
1
2
3
4
5
6
7
8
9
10
11
scientificToNumber: function(inputNumber) { if (isNaN(inputNumber)) { return inputNumber } inputNumber = '' + inputNumber inputNumber = parseFloat(inputNumber) let eformat = inputNumber.toExponential() // 转换为标准的科学计数法形式(字符串) let tmpArray = eformat.match(/d(?:.(d*))?e([+-]d+)/) // 分离出小数值和指数值 let number = inputNumber.toFixed(Math.max(0, (tmpArray[1] || '').length - tmpArray[2])) return number; }

至此,完善举例

复制代码
1
2
//举例:减法 let num1 = this.scientificToNumber(math.subtract(num2,num3));

如有问题,欢迎指正!

最后

以上就是淡然大树最近收集整理的关于vue加减乘除计算后精度缺失显示为科学计数的全部内容,更多相关vue加减乘除计算后精度缺失显示为科学计数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部