一文教會你解決js數(shù)字精度丟失問題
一、關(guān)于為什么要解決精度丟失
可以看下例子,因?yàn)閖s失去精度問題也是常見的問題,正常我們可以四舍五入或者 toFixed保留小數(shù)這種去解決
現(xiàn)在遇到問題是我們明知道計算結(jié)果是等于0.01的但是最后的結(jié)果確實(shí)true,如果我們遇到運(yùn)算問題,小數(shù)數(shù)值比對問題,那么我們就必須要去解決他,否則也就會出現(xiàn)上者情況,出現(xiàn)邏輯判斷出錯問題
二、怎么解決js的計算精度丟失問題?
正常來說如果是 小數(shù)點(diǎn)保留后2位、3位等等,我們可以使用常見的 * 百位數(shù)、千位數(shù) 實(shí)現(xiàn)整位結(jié)果后 將結(jié)果在除以對應(yīng)的數(shù)位實(shí)現(xiàn)結(jié)果,如下
console.log(5.22 - 5.21);
console.log((5.22 * 100 - 5.21 * 100) / 100);
根據(jù)上方的描述我們再去著眼看我們最開始的例子
結(jié)果也就成了我們想要的結(jié)果
三、toPrecision 特定方法返回四舍五入長度字符串
當(dāng)然toFixed也是可以實(shí)現(xiàn)對應(yīng)的長度取舍效果的,因?yàn)楦鞔鬄g覽器針對toFixed的各類結(jié)果都是不同的有興趣的同學(xué)可以參考下下面這篇文章
在這里我們只介紹 toPrecision 參照方法詳解
那么我們也就知道了此方法是用來干什么的
當(dāng)然再有一點(diǎn)也就是從左到右 不為0的位置開始計算
上方舉例 我們的結(jié)果是0.01
如果我們?nèi)ナ褂胻oPrecision的話,那么要填寫的參數(shù)則為1
返還的結(jié)果也就是我們想要的 0.01
然后我們搭配 parseFloat 對字符串進(jìn)行一個浮點(diǎn)數(shù)值轉(zhuǎn)換后,然后對比得出最后結(jié)果
console.log(5.22 - 5.21 < 0.01); console.log((5.22 * 100 - 5.21 * 100) / 100 < 0.01); var num = 5.22 - 5.21; console.log(parseFloat(num.toPrecision(1)) < 0.01);
結(jié)語
到此這篇關(guān)于解決js數(shù)字精度丟失問題的文章就介紹到這了,更多相關(guān)js數(shù)字精度丟失內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用ajaxfileupload插件實(shí)現(xiàn)文件上傳無刷新的具體方法
利用ajaxfileupload插件實(shí)現(xiàn)文件上傳無刷新的具體方法,需要的朋友可以參考一下2013-06-06js通過更改按鈕的顯示樣式實(shí)現(xiàn)按鈕的滑動效果
使用js實(shí)現(xiàn)按鈕的滑動效果,通過更改按鈕的顯示樣式,來實(shí)現(xiàn)按鈕動態(tài)滑動,需要的朋友可以參考下2014-04-04JS實(shí)現(xiàn)鼠標(biāo)滑過折疊與展開菜單效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)鼠標(biāo)滑過折疊與展開菜單效果代碼,涉及JavaScript基于鼠標(biāo)事件動態(tài)改變頁面元素樣式的相關(guān)實(shí)現(xiàn)技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-09-09JavaScript實(shí)現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03javascript中parentNode,childNodes,children的應(yīng)用詳解
本篇文章是對javascript中parentNode,childNodes,children的應(yīng)用進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12基于JavaScript的數(shù)據(jù)結(jié)構(gòu)隊列動畫實(shí)現(xiàn)示例解析
這篇文章主要介紹了基于JavaScript的數(shù)據(jù)結(jié)構(gòu)隊列動畫實(shí)現(xiàn)示例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08JS數(shù)組扁平化的方法合集(遞歸,while循環(huán),flat)
數(shù)組扁平化也是面試??碱}之一,今天就和大家簡單分享一下常見的數(shù)組扁平方法,這題其實(shí)主要考察的是遞歸思想,因?yàn)楫?dāng)數(shù)組里面嵌套非常多層數(shù)組的時候只能通過循環(huán)遞歸來進(jìn)行扁平,本次分享主要也是分享本題的遞歸思想,需要的朋友可以參考下2024-06-06JavaScript事件監(jiān)聽之鍵盤事件詳細(xì)介紹
在實(shí)際應(yīng)用中我們常常會遇到監(jiān)聽按鍵輸入和鼠標(biāo)點(diǎn)擊事件,下面這篇文章主要給大家介紹了關(guān)于JavaScript事件監(jiān)聽之鍵盤事件的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06