美文网首页
weex中的运算保证精度

weex中的运算保证精度

作者: 异乡人_4f2a | 来源:发表于2019-04-22 22:36 被阅读0次

//精准加法函数

exports.add = function(arg1, arg2) {

  var r1, r2, m, c;

  try {

      r1 = arg1.toString().split(".")[1].length;

  }

  catch (e) {

      r1 = 0;

  }

  try {

      r2 = arg2.toString().split(".")[1].length;

  }

  catch (e) {

      r2 = 0;

  }

  m = Math.pow(10, Math.max(r1, r2));

  c = Math.abs(r1 - r2);

  if (c > 0) {

      var cm = Math.pow(10, c);

      if (r1 > r2) {

          arg1 = Number(arg1.toString().replace(".", ""));

          arg2 = Number(arg2.toString().replace(".", "")) * cm;

      } else {

          arg1 = Number(arg1.toString().replace(".", "")) * cm;

          arg2 = Number(arg2.toString().replace(".", ""));

      }

  } else {

      arg1 = Number(arg1.toString().replace(".", ""));

      arg2 = Number(arg2.toString().replace(".", ""));

  }

  return (arg1 + arg2) / m;

},

//精准减法函数

exports.sub = function(arg1, arg2) {

  var r1, r2, m;

  try {

      r1 = arg1.toString().split(".")[1].length;

  }catch (e) {

      r1 = 0;

  }

  try {

      r2 = arg2.toString().split(".")[1].length;

  }catch (e) {

      r2 = 0;

  }

  m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度

  return (exports.mul(arg1, m) - exports.mul(arg2, m)) / m;

},


//精准乘法函数

exports.mul = function(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);

},

//精准除法函数

exports.div = function(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) {}

  r1 = Number(arg1.toString().replace(".", ""));

  r2 = Number(arg2.toString().replace(".", ""));

  return mul(r1 / r2, Math.pow(10, t2 - t1));

},

相关文章

  • weex中的运算保证精度

    //精准加法函数 exports.add = function(arg1, arg2) { var r1, r...

  • JavaScript 浮点运算精度问题

    JavaScript 浮点运算精度问题 JavaScript浮点运算存在精度问题,本文阐述问题的产生原因以及解决方...

  • C自动转换遵循规则

    若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 转换按数据长度增加的方向进行,以保证精度不降低。如in...

  • javaScript-02

    运算符 算数运算符 概念:算术运算使用的符号,用于执行两个变量或值的算术运算。 浮点数的精度问题浮点数值的最高精度...

  • 读Java编程思想 知识点一

    1、Java中高精度数据类型 BigInteger 支持任意精度的整数。也就是说,在运算中,可以准确地表示任何大小...

  • 使用underscorejs解决js的大数问题

    js的浮点运算存在精度问题原因:js对于number类型的数使用的是IEEE754标准中的双精度数存储,总共64位...

  • Ruby中BigDecimal to_json问题

    Ruby提供了一种BigDecimal类型。BigDecimal专门用于处理高精度的浮点数运算,在运算过程中不会丢...

  • iOS开发浮点数计算精度问题

    1、浮点数运算带来的问题 在日常工作中涉及到浮点数(float、double)的运算 2、浮点数运算精度的解决方案...

  • R 浮点运算中的精度问题

    举个例子: 这里竟然出现了0.6大于0.6的情况。 这也是在计算机中经常出现的一个问题。(不过表示出来这样的结果起...

  • javascript运算精度

    一个经典的浮点数运算0.1+0.2 ==0.30000000000000004 js在运算的时候会把10进制转化为...

网友评论

      本文标题:weex中的运算保证精度

      本文链接:https://www.haomeiwen.com/subject/abepgqtx.html