相信绝大部分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);

JS 四则运算精度丢失解决方案相关推荐

  1. js浮点数精度丢失问题及如何解决js中浮点数计算不精准

    js浮点数精度丢失问题及如何解决js中浮点数计算不精准 参考文章: (1)js浮点数精度丢失问题及如何解决js中浮点数计算不精准 (2)https://www.cnblogs.com/ranyonsu ...

  2. 浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源

    在知乎上上看到如下问题: 浮点数精度问题的前世今生? 1.该问题出现的原因 ? 2.为何其他编程语言,比如java中可能没有js那么明显 3.大家在项目中踩过浮点数精度的坑? 4.最后采用哪些方案规避 ...

  3. c# 取余数 浮点数_浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源

    在知乎上上看到如下问题: 浮点数精度问题的前世今生? 1.该问题出现的原因 ? 2.为何其他编程语言,比如java中可能没有js那么明显 3.大家在项目中踩过浮点数精度的坑? 4.最后采用哪些方案规避 ...

  4. python 浮点数精度丢失_javascript解决小数的加减乘除精度丢失的方案

    原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况. javascript(js)的小数点加减乘除问题,是一个js的bug如0.3* ...

  5. python 浮点数精度丢失_浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源...

    浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源 无论在java python javaScript里面都存在 1+ 2!== 3 问题,这个问题的产生根源在于计算存储数字是二进制,对无限循环小 ...

  6. js做四则运算时,精度丢失问题及解决方法

    js做四则运算时,精度丢失问题及解决方法 参考文章: (1)js做四则运算时,精度丢失问题及解决方法 (2)https://www.cnblogs.com/smile-tianxia/p/117149 ...

  7. 【JS】详解JS精度丢失原理以及业务中价格计算引入数学库 Math.js的使用场景

    一.JS为什么会出现精度丢失问题 1.JS基本数据类型 Number 在内存中是怎么存储的? JS中的Number类型使用的是双精度浮点型,也就是其他语言中的double类型.在计算机内存中,单精度数 ...

  8. JavaScript 进制之间的转换、大数或小数精度丢失、js不同进制的表示(分享)

    文章目录 1. toString(radix) 2. parseInt(string, radix) 3. 0.1 + 0.2 !=== 0.3 4. BigInt() 5. js不同进制的表示 1. ...

  9. 由parseInt 引发的问题---想到浮点运算精度丢失---看透js number 的 encoded

    如题 先陈述下问题背景 偶尔测测自己写的计算器,随便输入玩嘛,然后发生下面诡异的事情: 当我从一个 1 输入到十个 1 的时候,过程显示都是正确的,像这样: 继续输入一个 1 的时候,然后就这个样子了 ...

最新文章

  1. 关于接口测试,我们要测什么,怎么上手
  2. React Native 设置RGBA背景色
  3. JS实现动态显示当前时间(12/24小时制)(转载Mr.Think)
  4. cxf开发基于web的webservice项目(转载)
  5. 【opencv】实时人脸+眼睛+微笑检测
  6. 地图标识符号大全_创意游戏小程序大全:胡建土楼游戏!带你领略不一样的创意小游戏...
  7. ViewPager里面ImageView图片切换出现bug
  8. 搭建MyEclipse和Tomcat遇到的坑(JavaEE作业)
  9. eslint 报error
  10. 【转】win10安装caffe教程
  11. 动手实现图像双线性插值——实现图像resize
  12. STM32H743IIT6+USB3300,USB_HS高速双向HID通讯开发
  13. MyX5TbsPlusDemo【体验腾讯浏览服务Android SDK (TbsPlus 版)】
  14. Windows10家庭版获取最高管理员权限
  15. 无线路由器的五种工作模式
  16. BOC保护的氨基酸卟啉TAPP-Ala-BOC、TAPP-Phe-BOC、TAPP-Trp-BOC、Zn·TAPP-Ala-BOC、Zn·TAPP-Phe-BOC、Zn·TAPP-Trp-BOC齐岳
  17. android 生成bks_Android 添加 证书(pem,crt,p12,bks,jks)到 keystore.bks
  18. 完美解决:*.vmx是由VMware产品创建,但该产品与此版VMware workstation不兼容因此无法使用…
  19. elasticsearch彻底删除文件命令行操作
  20. 知识点滴 - 如何下载其他地区的iOS App

热门文章

  1. jenkins设置使用参数构建项目
  2. VUE—从入门到飞起(五)
  3. Docker的安装和Redis容器
  4. 绘制半圆_AI教程/绘制雪人插画
  5. 笔记本电脑可以做网站服务器,个人笔记本能做网站服务器吗
  6. 神策 FM | 20 种方法,让你成为用户的知心朋友
  7. 喜报!中华万年历签约神策数据
  8. 挪动脑袋吃汉堡?AR版《贪吃蛇》帮你治好颈椎病
  9. QQ 相册后台存储架构重构与跨 IDC 容灾实践
  10. [NOIP2002] 提高组 洛谷P1031 均分纸牌