当前位置

首页 > 互联网 > 计算机 > java语言 > javascript的小数点乘法除法实例

javascript的小数点乘法除法实例

推荐人: 来源: 文萃屋 阅读: 1.61W 次
javascript的小数点乘法除法实例
   导语:想要学好Java语言,必不可少的就是它的四则运算,特别是乘除法。下面的是本站小编为大家搜集的javascript的小数点乘法除法实例,希望可以帮到你。  一、用js计算  12.32 * 7 结果是多少?答案:86.24000000000001  为什么会出现这种问题?怎么解决?  js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理。  以上的计算可以改为:  12.32 * 100 * 7 /100  得出的结果是:86.24,正确。  另外再计算一下:  8.80 * 100 * 12 / 100  结果:105.60000000000002  38.80也会出现类似的问题。  精确度增加10倍:  8.80 * 1000 * 12 / 1000  结果:105.6  正常了。  16.40 * 1000000 * 6 / 1000000  结果也有问题  为了让js执行的更准确,在以后的js小数计算中直接将值扩大10000倍,再除以10000,就可以解决问题。  var num = 38.80;  var num2 = 13;  alert(num * 10000 * 12 / 10000);  被乘和除的这个数经过测试10000最合适,小了有些数字出问题,大了(1000000)有些数字也出问题。  二、  <script defer>  =function(){  varoStr=ring();  if(xOf(".")==-1)  return1;  else  (10,parseInt(xOf(".")-1));  }  functiontran(){  args=ments;  vartemp=1;  for(i=0;i<th;i++)  temp*=args[i]*args[i]();  for(i=0;i<th;i++)  temp/=args[i]();  returntemp  }  alert(tran(11,22.9));  </script>  该解决 办法是比较麻烦的办法,但是却能让你大概了解解决这个问题的实际过程。  //除法函数,用来得到精确的除法结果  //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。  //调用:accp(arg1,arg2)  //返回值:arg1除以arg2的精确结果  function accp(arg1,arg2){  var t1=0,t2=0,r1,r2;  try{t1=ring()t(".")[1]th}catch(e){}  try{t2=ring()t(".")[1]th}catch(e){}  with(Math){  r1=Number(ring()ace(".",""))  r2=Number(ring()ace(".",""))  return (r1/r2)*pow(10,t2-t1);  }  }  //给Number类型增加一个p方法,调用起来更加 方便。  otype.p = function (arg){  return accp(this, arg);  }  //乘法函数,用来得到精确的'乘法结果  //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。  //调用:accMul(arg1,arg2)  //返回值:arg1乘以 arg2的精确结果  function accMul(arg1,arg2)  {  var m=0,s1=ring(),s2=ring();  try{m+=t(".")[1]th}catch(e){}  try{m+=t(".")[1]th}catch(e){}  return Number(ace(".",""))*Number(ace(".",""))/(10,m)  }  // 给Number类型增加一个mul方法,调用起来更加方便。   = function (arg){  return accMul(arg, this);  }  //加法函数,用来得到精确的加法结果  //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。  //调用:accAdd(arg1,arg2)  // 返回值:arg1加上arg2的精确结果  function accAdd(arg1,arg2){  var r1,r2,m;  try{r1=ring()t(".")[1]th}catch(e){r1=0}  try{r2=ring()t(".")[1]th}catch(e){r2=0}  m=(10,(r1,r2))  return (arg1*m+arg2*m)/m  }  //给Number类型增加一个add方法,调用起来更加方便。   = function (arg){  return accAdd(arg,this);  }