资讯专栏INFORMATION COLUMN

如何优雅解决 js小数点计算错误问题(三个函数告诉你解决办法)

xcold / 2501人阅读

摘要:策略就是把小数值变成整数进行操作加减乘除获取最大补位长度数字补位数字减位

策略就是把小数值变成整数进行操作加减乘除
github --- L6zt

// 获取最大补位长度
const findMinRadixPoint = (numberList) => {
  let maxLg = 0;
  numberList.forEach(num => {
    let numStr = num.toString();
    let numSplit = numStr.split(".");
    let bitLg =  (numSplit[1] || "").length;
    (bitLg > maxLg) && (maxLg = bitLg)
  });
  return maxLg
};

/*数字补位*/
const numberCoverPosition = (number, length) => {
  let numberStr = String(number);
  let lg = numberStr.length;
  let idx = numberStr.indexOf(".");
  if (idx === -1) {
    return number * Math.pow(10, length);
  } else {
    let addW = length - (lg - 1 - idx);
    let oLoop = "";
    while (addW) {
      oLoop += "0";
      addW--;
    }
    return Number(numberStr.replace(/(d+?).(d+?)/, `$1$2${oLoop}`))
  }
};
/*数字减位*/
const NumberDigitAbsorption = (number, length) => {
  let numberStr = String(number);
  let lg = numberStr.length;
  
  if (lg > length) {
    numberStr = numberStr.substr(0, lg - length) + "." + numberStr.substr(lg - length);
  } else {
    let leftW = length - lg;
    let oLoop = "";
    while (leftW) {
      oLoop += "0";
      leftW--;
    }
    numberStr = "0." + oLoop + numberStr
  }
  return numberStr
};

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102760.html

相关文章

  • 「干货」细说 Javascript 中的浮点数精度丢失问题(内附好课推荐)

    摘要:前言最近,朋友问了我这样一个问题在中的运算结果,为什么是这样的虽然我告诉他说,这是由于浮点数精度问题导致的。由于可以用阶码移动小数点,因此称为浮点数。它的实现遵循标准,使用位精度来表示浮点数。 showImg(https://segmentfault.com/img/remote/1460000018981071); 前言 最近,朋友 L 问了我这样一个问题:在 chrome 中的运算...

    senntyou 评论0 收藏0
  • 90年代的兴衰——强化学习与递归神经网络

    摘要:强化学习这就是神经网络流行起来的地方。而且,我们也在这一范围内取得了强化学习史上最重要的成绩之一一个学习并成为西洋双陆棋玩家的神经网络。递归神经网络图。 这是「神经网络和深度学习简史」的第三部分(第一部分,第二部分)。在这一部分,我们将继续了解90年代研究的飞速发展,搞清楚神经网络在60年代末失去众多青睐的原因。神经网络做决定神经网络运用于无监督学习的发现之旅结束后,让我们也快速了解一下它们...

    rozbo 评论0 收藏0
  • 【译】Javascript 面试的完美指南(开发者视角)

    摘要:闭包是返回另一个函数并携带数据的函数。当程序的上下文和作用域发生变化时,也会发生相应的变化。之所以是类型,是因为类的构造函数它是类型的。如下这里的是一个回调函数,当成功响应请求时将执行该回调函数。 译者:前端小智 原文:medium.com/dev-bits/a-… 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 为了说明 JS 面试的复杂性,首先,请尝试给出以下结果...

    Joonas 评论0 收藏0
  • javascript 面试的完美指南(开发者视角)

    摘要:闭包是返回另一个函数并携带数据的函数。当程序的上下文和作用域发生变化时,也会发生相应的变化。之所以是类型,是因为类的构造函数它是类型的。如下这里的是一个回调函数,当成功响应请求时将执行该回调函数。 showImg(https://segmentfault.com/img/bVboyxw?w=2560&h=1440); 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你!...

    morgan 评论0 收藏0
  • JS核心知识点梳理——变量篇

    摘要:核心知识点梳理数据篇看了一些资料,结合高程和对核心知识点进行了梳理。所以,一共有种声明变量的方法。凡是在声明之前就使用这些变量,就会报错。还是那句话,建议大家掌握核心知识点,细枝末节的东西就随意啦。 JS核心知识点梳理——数据篇 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 看了一些资料,结合ES6、高程和MD...

    aristark 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<