国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS 四則運算精度丟失解決方案

megatron / 3018人閱讀

摘要:相信絕大部分開發者遇見過這個問題,原理很多文章都有解釋,我這就不多說了,直接上解決方案的代碼。若該文章解決了你碰到的問題,請點個贊哈哈調用方法如下如,

相信絕大部分js開發者遇見過這個問題,原理很多文章都有解釋,我這就不多說了,直接上解決方案的代碼。

代碼:

    //加法   
    Number.prototype.add = function(arg){   
        var r1,r2,m;   
        try{r1=this.toString().split(".")[1].length}catch(e){r1=0}   
        try{r2=arg.toString().split(".")[1].length}catch(e){r2=0}   
        m=Math.pow(10,Math.max(r1,r2))   
        return (this.mul(m) + arg.mul(m)) / m;   
    }  
    
    //減法   
    Number.prototype.sub = function (arg){   
        return this.add(-arg);   
    }   

    //乘法   
    Number.prototype.mul = function (arg)   
    {   
        var m=0,s1=this.toString(),s2=arg.toString();   
        try{m+=s1.split(".")[1].length}catch(e){}   
        try{m+=s2.split(".")[1].length}catch(e){}   
        return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)   
    }   

    //除法   
    Number.prototype.div = function (arg){   
        var t1=0,t2=0,r1,r2;   
        try{t1=this.toString().split(".")[1].length}catch(e){}   
        try{t2=arg.toString().split(".")[1].length}catch(e){}   
        with(Math){   
            r1=Number(this.toString().replace(".",""))   
            r2=Number(arg.toString().replace(".",""))   
            return (r1/r2)*pow(10,t2-t1);   
        }   
    }

這段代碼是參考自JS 精度問題,然而這代碼還有點小瑕疵,經過小修改后如上。
經過親測是沒什么問題的,大家可以自由測試下。
若該文章解決了你碰到的問題,請點個贊~哈哈

調用方法如下:

如: 0.1+0.2,2.22+0.1,2480-2479.99

0.1.add(0.2);
2.22.add(0.1);
2480.sub(2479.99);

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80659.html

相關文章

  • [ JS 基礎 ] JS 浮點數四則運算精度丟失問題 (3)

    摘要:基于這個問題運動基礎問題,我想應該也有一部分人沒有認真對待過中浮點數的四則運算出現的問題。解決方案引自解決方案為了解決浮點數運算不準確的問題,在運算前我們把參加運算的數先升級的的次方到整數,等運算完后再降級的的次方。 基于這個問題:javascript運動基礎問題 ,我想應該也有一部分人沒有認真對待過js中浮點數的四則運算出現的問題。 1.問題描述 示例代碼: var x ...

    hoohack 評論0 收藏0
  • 由parseInt 引發的問題---想到浮點運算精度丟失---看透js number 的 encod

    摘要:如題先陳述下問題背景偶爾測測自己寫的計算器,隨便輸入玩嘛,然后發生下面詭異的事情當我從一個輸入到十個的時候,過程顯示都是正確的,像這樣繼續輸入一個的時候,然后就這個樣子了什么原因呢看了下自己的代碼,代碼重要部分長這樣的這里用了一下強制轉化為 如題 先陳述下問題背景 偶爾測測自己寫的計算器,隨便輸入玩嘛,然后發生下面詭異的事情:當我從一個 1 輸入到十個 1 的時候,過程顯示都是正確的...

    hightopo 評論0 收藏0
  • JavaScript 基礎知識 - 入門篇(一)

    摘要:如圖意義位用來表示符號位位用來表示指數位表示尾數浮點數,比如無限循環無限循環此時只能模仿十進制進行四舍五入了,但是二進制只有和兩個,于是變為舍入。這即是計算機中部分浮點數運算時出現誤差,丟失精度的根本原因。 showImg(http://ww1.sinaimg.cn/large/9c47d583gy1fmtw1ma9g4j21hc0u0ach.jpg); 前言 最近一直有小伙伴跟我說J...

    sarva 評論0 收藏0
  • 「干貨」細說 Javascript 中的浮點數精度丟失問題(內附好課推薦)

    摘要:前言最近,朋友問了我這樣一個問題在中的運算結果,為什么是這樣的雖然我告訴他說,這是由于浮點數精度問題導致的。由于可以用階碼移動小數點,因此稱為浮點數。它的實現遵循標準,使用位精度來表示浮點數。 showImg(https://segmentfault.com/img/remote/1460000018981071); 前言 最近,朋友 L 問了我這樣一個問題:在 chrome 中的運算...

    senntyou 評論0 收藏0
  • 從一個 bug 看 javascript 的精度丟失的問題

    摘要:就像一些無理數不能有限表示,如圓周率,等。遵循規范,采用雙精度存儲,占用。參考中不會失去精度的最大值數字精度丟失的一些典型問題 問題描述 后端返回 { spaceObject: { objectId: 1049564069045993472 } } 前端模版,使用的是 atpl 模版 前端獲取 objectId 的方式,const objectId = $(#test).da...

    NusterCache 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<