1、介绍

项目中出现四则运算精度错误问题,引入math.js来解决,并封装四则运算方法。

2、安装

  1. npm install mathjs

3、引入

全局引入

  1. //main.js引入
  2. import * as math from 'mathjs'
  3. Vue.prototype.$math = math
  4. 组件中使用
  5. $math.add($math.bignumber(a), $math.bignumber(b));

按需引入

  1. //组件中使用
  2. import {add,subtract,multiply,divide,bignumber} from 'mathjs'

4、封装

  1. //新建utils.js 对公共方法进行封装
  2. import {add,subtract,multiply,divide,bignumber} from 'mathjs'
  3. const math = {
  4. //加法
  5. add(a,b){
  6. return add(bignumber(a), bignumber(b));
  7. },
  8. //减法
  9. subtract(a,b){
  10. return subtract(bignumber(a), bignumber(b));
  11. },
  12. // 乘法
  13. multiply(a,b){
  14. return multiply(bignumber(a), bignumber(b));
  15. },
  16. // 除法
  17. divide(a,b){
  18. return divide(bignumber(a), bignumber(b));
  19. }
  20. }
  21. export { math }
  22. //组件中使用
  23. import { math } from '@/utils/math'
  24. math.add(this.a,this.b)

5、附录

vue组件使用实例

  1. <template>
  2. <div id="app">
  3. <div>
  4. <input type="text" v-model="a"> +
  5. <input type="text" v-model="b"> =
  6. {{add}}
  7. </div>
  8. <div>
  9. <input type="text" v-model="a"> -
  10. <input type="text" v-model="b"> =
  11. {{subtract}}
  12. </div>
  13. <div>
  14. <input type="text" v-model="a"> *
  15. <input type="text" v-model="b"> =
  16. {{multiply}}
  17. </div>
  18. <div>
  19. <input type="text" v-model="a"> /
  20. <input type="text" v-model="b"> =
  21. {{divide}}
  22. </div>
  23. </div>
  24. </template>
  25. <script>
  26. import { math } from '@/utils/math'
  27. export default {
  28. name: 'home',
  29. computed:{
  30. add(){
  31. return math.add(this.a,this.b)
  32. },
  33. subtract(){
  34. return math.subtract(this.a,this.b)
  35. },
  36. multiply(){
  37. return math.multiply(this.a,this.b)
  38. },
  39. divide(){
  40. return math.divide(this.a,this.b)
  41. }
  42. },
  43. data() {
  44. return {
  45. a:1,
  46. b:2,
  47. }
  48. }
  49. }
  50. </script>
  51. <style>
  52. #app {
  53. font-family: 'Avenir', Helvetica, Arial, sans-serif;
  54. -webkit-font-smoothing: antialiased;
  55. -moz-osx-font-smoothing: grayscale;
  56. text-align: center;
  57. color: #2c3e50;
  58. margin-top: 60px;
  59. }
  60. </style>

math.js官网

https://mathjs.org/docs/getting_started.html