vue中如何使用math.js
vue使用math.js
math.js可以解決前端金額類計(jì)算精度問(wèn)題
安裝math.js
npm install mathjs
math.js配置
新建math.js文件內(nèi)容如下
const $math = require('mathjs')
export 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]))
? }
? // 防止超過(guò)6位使用科學(xué)計(jì)數(shù)法
? return parseFloat(t.done())
}建議存放在utils文件夾下
引入math.js
import { math } from '@/utils/math.js'math.js使用
math.add(a+b)//加 math.subtract(a-b)//減 math.multiply(a*b)//乘 math.divide(a/b)//除
如需其他計(jì)算方法可點(diǎn)擊標(biāo)題math.js進(jìn)入官網(wǎng)查看語(yǔ)法并添加到math.js文件中
vue使用mathjs解決前端計(jì)算精度不足問(wèn)題
在前端開(kāi)發(fā)過(guò)程中,你會(huì)發(fā)現(xiàn)0.1 + 0.2 != 0.3 如下圖

他居然等于0.30000000000000004…
為什么會(huì)這樣大家可以百度,涉及到10進(jìn)制和2進(jìn)制的轉(zhuǎn)換問(wèn)題,我們暫不討論,我們先來(lái)解決這個(gè)問(wèn)題。
現(xiàn)在有現(xiàn)成的庫(kù)給我們調(diào)用 math.js
首先先安裝依賴
npm install mathjs --save
然后再需要計(jì)算的頁(yè)面調(diào)用
import * as math from 'mathjs'
下面記錄簡(jiǎn)單的加減乘除方法,其余更牛逼的數(shù)學(xué)算法大家可以自行翻文檔研究
加法
// 原本 console.log(0.1 + 0.2) // 0.30000000000000004 // 用math.js之后 const addNumber = math.format( math.add( math.bignumber(0.1),math.bignumber(0.2) ) ) console.log(addNumber) // 0.3
減法
// 原本 console.log(1 - 0.9) // 0.09999999999999998 // 用math.js之后 const subtractNumber = math.format( math.subtract( math.bignumber(1), math.bignumber(0.9) ) ) consol(subtractNumber) // 0.1
乘法
// 原本 console.log(10 * 1.2 * 0.3) // 3.5999999999999996 // 用math.js之后 const multiplyMumber = math.format( math.multiply( math.bignumber(10), math.bignumber(1.2), math.bignumber(0.3) ) ) console.log(multiplyMumber) // 3.6
除法
// 原本 console.log(1.2 / 3) // 0.39999999999999997 // 用math.js之后 const divideNumber = math.format( math.divide( math.bignumber(1.2), math.bignumber(3) ) ) console.log(divideNumber) // 0.4
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue Element前端應(yīng)用開(kāi)發(fā)之Vuex中的API Store View的使用
這篇文章主要介紹了Vue Element前端應(yīng)用開(kāi)發(fā)之Vuex中的API Store View的使用,對(duì)Vue感興趣的同學(xué),可以參考下2021-05-05
Vue組織架構(gòu)樹(shù)圖組件vue-org-tree的使用解析
這篇文章主要介紹了Vue組織架構(gòu)樹(shù)圖組件vue-org-tree的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Vue3中使用reactive時(shí),后端有返回?cái)?shù)據(jù)但dom沒(méi)有更新的解決
這篇文章主要介紹了Vue3中使用reactive時(shí),后端有返回?cái)?shù)據(jù)但dom沒(méi)有更新的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
vue實(shí)現(xiàn)集成騰訊TIM即時(shí)通訊
最近在做商城類的項(xiàng)目,需要使用到客服系統(tǒng),用戶選擇的騰訊IM即時(shí)通信,所以本文主要介紹了vue實(shí)現(xiàn)集成騰訊TIM即時(shí)通訊,感興趣的可以了解一下2021-06-06
Vue使用jsmind實(shí)現(xiàn)生成腦圖的示例代碼
這篇文章主要為大家詳細(xì)介紹了Vue如何使用jsmind實(shí)現(xiàn)生成腦圖,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下2024-03-03
Vue?+?element-ui?背景圖片設(shè)置方式
這篇文章主要介紹了Vue?+?element-ui?背景圖片設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue源碼學(xué)習(xí)之Object.defineProperty 對(duì)數(shù)組監(jiān)聽(tīng)
這篇文章主要介紹了vue源碼學(xué)習(xí)之Object.defineProperty 對(duì)數(shù)組監(jiān)聽(tīng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
vue中axios的封裝問(wèn)題(簡(jiǎn)易版攔截,get,post)
這篇文章主要介紹了vue中axios的封裝問(wèn)題(簡(jiǎn)易版攔截,get,post),需要的朋友可以參考下2018-06-06

