javascript两个数值简单运算精度修正函数

原创 2007年09月27日 15:00:00

之前发在csdn的javascript版
------------------------------
/*
* 数值简单运算精度修正函数
* m  数值1(number)
* n  数值2(number)
* op 操作符(string)
*/
function fixMath(m, n, op) {
  var a = (m+"");
  var b = (n+"");
  var x = 1;
  var y = 1;
  var c = 1;
  if(a.indexOf(".")>0) {
    x = Math.pow(10, a.length - a.indexOf(".") - 1);
  }
  if(b.indexOf(".")>0) {
    y = Math.pow(10, b.length - b.indexOf(".") - 1);
  }
  switch(op)
  {
    case '+':
    case '-':
      c = Math.max(x,y);
      m = Math.round(m*c);
      n = Math.round(n*c);
      break;
    case '*':
      c = x*y
      m = Math.round(m*x);
      n = Math.round(n*y);
      break;
    case '/':
      c = Math.max(x,y);
      m = Math.round(m*c);
      n = Math.round(n*c);
      c = 1;
      break;
  }
  return eval("("+m+op+n+")/"+c);
}

用法如下:
-----------------------
fixMath(2.3, 1.9, '*')
fixMath(1.98, 1.9, '-')
fixMath(83.50, 74.15, '-') 

javascript数值四则运算精度修正函数

/*  * 四则运算精度修正函数 * m 数值1(number) * n 数值2(number) * op 操作符(string) */function fixMath(m, n, op) {    ...
  • ljqsky
  • ljqsky
  • 2008年10月12日 02:17
  • 248

JS 四则运算(加减乘除小数运算)避免损失精度

/** 02  * 加法运算,避免数据相加小数点后产生多位数和计算精度损失。 03  * ...
  • u010025294
  • u010025294
  • 2014年04月18日 11:23
  • 3068

JavaScript 浮点数运算的精度问题

问题描述 在 JavaScript 中整数和浮点数都属于 Number 数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此。 所以我们在打印 1.00 这样的浮点数的结果是 ...
  • helloxiaoliang
  • helloxiaoliang
  • 2017年05月25日 10:57
  • 1200

讨论c/c++计算小数的精度问题

求出所有100以下整数与一位小数相乘等于相加的浮点数这个有Bug浮点数计算时精度会出现误差   除非使用非常精确的类型或限制浮点的位数 比如 #include int main() ...
  • loongsking
  • loongsking
  • 2014年03月17日 14:40
  • 1889

JavaScript数值最大精度

JavaScript数值最大精度 根据国际标准 IEEE 754,JavaScript 浮点数的64个二进制位,从最左边开始,是这样组成的: 第1位:符号位,0表示正数,1表示负数 第2位到...
  • sunny05296
  • sunny05296
  • 2018年01月17日 08:52
  • 38

关于js精度计算

问题这样的: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这...
  • dada360778512
  • dada360778512
  • 2010年11月24日 18:33
  • 4030

双精度浮点数的加法计算误差及其避免的初步方法

双精度浮点数的加法计算误差及其避免的初步方法我一开始是在mysql的sum函数中发现计算误差,经过分析,认为可能与双精度浮点数有关#include main(){  char  str[256];  ...
  • l1t
  • l1t
  • 2004年10月09日 11:22
  • 5754

C++中控制浮点数精度函数setprecision使用方法

函数原型: setprecision(streamsize _Prec); 功能: 使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6 参数:...
  • shihui512
  • shihui512
  • 2013年05月12日 21:41
  • 4448

JS比较两个数值的大小

一般情况下: if(2 > 10){alert("不正确!");}此比较不会是想要的结果:它相当于2 >1,把10的第一位取出来比较。解决方法: if(eval(2) > eval(10)){aler...
  • liuchuan_accp
  • liuchuan_accp
  • 2007年11月23日 17:04
  • 240

Java 高精度的大数字运算

为了解决Java基本数据类型在运算时会出现的溢出和计算不精确的问题。Java 提供了两个类BigInteger和BigDecimal,专门用于进行高精度运算。凡是能用int 或float 做的事情,用...
  • aoshilang2249
  • aoshilang2249
  • 2015年05月19日 07:06
  • 2474
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript两个数值简单运算精度修正函数
举报原因:
原因补充:

(最多只允许输入30个字)