js數(shù)字計(jì)算 誤差問(wèn)題的快速解決方法
實(shí)例如下:
//加法函數(shù),用來(lái)得到精確的加法結(jié)果 //說(shuō)明:javascript的加法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相加的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的加法結(jié)果。 //調(diào)用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精確結(jié)果 function add(a,b){ var c, d, e; try { c = a.toString().split(".")[1].length; } catch (f) { c = 0; } try { d = b.toString().split(".")[1].length; } catch (f) { d = 0; } return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e; } //乘法函數(shù),用來(lái)得到精確的乘法結(jié)果 //說(shuō)明:javascript的乘法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相乘的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的乘法結(jié)果。 //調(diào)用:accMul(arg1,arg2) //返回值:arg1乘以arg2的精確結(jié)果 function mul(a, b) { var c = 0, d = a.toString(), e = b.toString(); try { c += d.split(".")[1].length; } catch (f) {} try { c += e.split(".")[1].length; } catch (f) {} return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c); } //減法函數(shù),用來(lái)得到精確的減法結(jié)果 //說(shuō)明:javascript的減法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相加的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的減法結(jié)果。 //調(diào)用:accSubtr(arg1,arg2) //返回值:arg1減去arg2的精確結(jié)果 function sub(a,b){ var c, d, e; try { c = a.toString().split(".")[1].length; } catch (f) { c = 0; } try { d = b.toString().split(".")[1].length; } catch (f) { d = 0; } return e = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e; } //除法函數(shù),用來(lái)得到精確的除法結(jié)果 //說(shuō)明:javascript的除法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相除的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的除法結(jié)果。 //調(diào)用:accDiv(arg1,arg2) //返回值:arg1除以arg2的精確結(jié)果 function div(a, b) { var c, d, e = 0, f = 0; try { e = a.toString().split(".")[1].length; } catch (g) {} try { f = b.toString().split(".")[1].length; } catch (g) {} return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), mul(c / d, Math.pow(10, f - e)); }
以上這篇js數(shù)字計(jì)算 誤差問(wèn)題的快速解決方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript學(xué)習(xí)筆記--常用的互動(dòng)方法
本文對(duì)JavaScript中常用的互動(dòng)方法進(jìn)行實(shí)例分析介紹,圖文并茂,有需要的朋友可以看下2016-12-12window.event.keyCode兼容IE和Firefox實(shí)現(xiàn)js代碼
window.event.keyCode兼容IE和Firefox具體實(shí)現(xiàn)代碼如下,感興趣的朋友可以參考下哈2013-05-05js中訪問(wèn)html中iframe的文檔對(duì)象的代碼[IE6,IE7,IE8,FF]
W3C的標(biāo)準(zhǔn)告訴我們,可以通過(guò)Dom對(duì)象的contentDocument屬性來(lái)返回文檔對(duì)象。2011-01-01探討javascript是不是面向?qū)ο蟮恼Z(yǔ)言
這篇文章主要是介紹了javascript是不是面向?qū)ο蟮恼Z(yǔ)言。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11Js中FileReader讀取文件內(nèi)容方法詳解(async/await)
這篇文章主要給大家介紹了關(guān)于Js中FileReader讀取文件內(nèi)容(async/await)的相關(guān)資料,FileReader是前端進(jìn)行文件處理的一個(gè)重要的Api,特別是在對(duì)圖片的處理上,如果你想知道圖片的處理原理,你就永遠(yuǎn)不可能繞過(guò)它,需要的朋友可以參考下2023-11-11JavaScript原生對(duì)象之String對(duì)象的屬性和方法詳解
這篇文章主要介紹了JavaScript原生對(duì)象之String對(duì)象的屬性和方法詳解,本文講解了length、charAt()、charCodeAt()、concat()、indexOf()、lastIndexOf()等方法屬性,需要的朋友可以參考下2015-03-03javascript實(shí)現(xiàn)貪吃蛇小游戲思路
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)貪吃蛇思路小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09JS 判斷某變量是否為某數(shù)組中的一個(gè)值的3種方法(總結(jié))
下面小編就為大家?guī)?lái)一篇JS 判斷某變量是否為某數(shù)組中的一個(gè)值的3種方法(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07