例: 0.1+0.1+0.1+0.7 != 1

   0.1+0.2 != 0.3

解决办法:

  相加

  function addNum(num1, num2) {
          let sq1, sq2;
          try {
              sq1 = num1.toString().split(".")[1].length;
          } catch (e) {
              sq1 = 0;
          }
          try {
              sq2 = num2.toString().split(".")[1].length;
          } catch (e) {
              sq2 = 0;
          }
          const m = Math.pow(10, Math.max(sq1, sq2));
          return (num1 * m + num2 * m) / m;
    }
  相除
function accDiv(arg1,arg2){
  var t1=0,t2=0,r1,r2;
  try{
    t1=arg1.toString().split(".")[1].length;
  }catch(e){}

  try{
  t2=arg2.toString().split(".")[1].length;
  }catch(e){}

  with(Math){
    r1=Number(arg1.toString().replace(".",""));
  r2=Number(arg2.toString().replace(".",""));
    return (r1/r2)*pow(10,t2-t1);
  }
}

相乘
function accMul(arg1,arg2){
  var m=0,s1=arg1.toString(),
  s2=arg2.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)}
)}

js小数相加精度不准确的更多相关文章

  1. java用double和float进行小数计算精度不准确

    java用double和float进行小数计算精度不准确 大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中或者已知的小数计算得到的结果会不准确,这种问题是非 ...

  2. 关于js浮点数计算精度不准确问题的解决办法

    今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一直碰到这个问题,都是简单的使用tofixed方法进行处理一下,这对于一个程序员来说是及其不严谨的.因此在网上收集了一些处理浮点数精 ...

  3. js 浮点数计算精度不准确问题

    或许很多人都遇到过,js 对小数的加.减.乘.除时经常得到一些奇怪的结果! 比如 :0.1 + 0.2 = 0.3  ? 这么一个简单的计算,当你用js 计算时会发现结果是:0.30000000000 ...

  4. js 小数相加

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...

  5. js 小数相加异常

    var a = 0.1; var b = 0.2; a + b//0.30000000000000004 这个bug可能是因为二进制计算溢出导致的. 解决办法:将小数转换为整数进行计算 计算后结果除以 ...

  6. js浮点数加减乘除精度不准确

    做个记录,以备不时之需 //加法 Number.prototype.add = function(arg){ var r1,r2,m; try{r1=this.toString().split(&qu ...

  7. 搞懂js中小数运算精度问题原因及解决办法

    js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言中的double类型(双精度浮点型),不区分浮点型和整数型. number类 ...

  8. js小数计算引起的精度误差问题

    我记得刚开始学js的时候学到浮点有举例0.1+0.2 它的计算结果是: 0.1+0.20.30000000000000004 很神奇的一个计算,js是弱语言,在精度上没做处理: 我就自己定义了加减乘除 ...

  9. JS 数字相加出现多个小数的问题

    今天在页面上用到了js进行小数相加119.01+0.01,结果大家都知道应该是:119.02的,然而结果是119..0200000…. ,莫名其妙的,还以为是我写的程序有问题,后来查了下才知道这是ja ...

  10. js 小数转整数,避免精度损失 bug

    js 小数转整数,避免精度损失 bug const arr = [ 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ]; // ( ...

随机推荐

  1. 工作频率运行在3.0 ~ 4.5 GHz的高效率GaAs HBT MMIC驱动放大器-CBG9326

    国内使用UWB高精度室内定位的行业应用产品,工作频段大部分都在3.5Ghz-6GHz低频段(Channel 2(特定场景如管隧矿)和Channel 5)范围,因此只能应用于煤矿.监狱等封闭的小众市场. ...

  2. JS 根据base64获取文件宽高

    const {width, height} = await this.getImgSize(base64) async getImgSize(base64) { const image = new I ...

  3. DBeaver导入SQL脚本数据

    DBeaver导入SQL脚本数据 起因 Navicat Premium还原备份的导致数据库中文乱码 看Navicat Premium中看中文数据,是正常显示了,但是在IEDA查询和Web页面上显示,均 ...

  4. GoLang之ACM控制台输入输出

    转自:https://blog.csdn.net/weixin_52690231/article/details/125436414

  5. c语言动态库与静态库

    // show.h #ifndef __SHOW_H_ #define __SHOW_H_ #include <stdio.h> #include "math.h" v ...

  6. Kubernetes DevOps CD工具对比选型

    目录 Kubernetes DevOps CD工具对比选型 一.Flux 二.ArgoCD 三.Jenkins X 四.方案比较 Kubernetes DevOps CD工具对比选型 一.Flux 1 ...

  7. JMETHOD

    #include <iostream> #define JMETHOD(type,methodname,arglist) type (*methodname) arglist JMETHO ...

  8. fiddler设置自动响应

    使用fiddler 设置AutoResponder 1.auto responder:自动响应器,设置并开启后将把请求接口拦截并返回 2.enable rules:开启规则,开启后规则启用 3.unm ...

  9. imputation-综述文章:关于网络推理的scRNA序列插补工具基准突出了高稀疏性水平下的性能缺陷

    文章题目: Benchmarking scRNA-seq imputation tools with respect to network inference highlights 中文题目: 关于网 ...

  10. mysql清理库中所有表的数据

    SELECT CONCAT('truncate table ',TABLE_NAME,';') AS a FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHE ...