当前位置:首页 > 开发 > Web前端 > JavaScript > 正文

js float类型数据的加减乘除bug修复

发表于: 2013-01-06   作者:aahyhaa   来源:转载   浏览:
摘要: var FloatCalFun=new Object(); //获取参数精度,如果为整数则精度为0 FloatCalFun._getPrecision=function(arg){ if(arg.toString().indexOf(".")==-1){ return 0; }else{ return arg.toString().spl
var FloatCalFun=new Object();
//获取参数精度,如果为整数则精度为0
FloatCalFun._getPrecision=function(arg){
  if(arg.toString().indexOf(".")==-1){
     return 0;
  }else{
     return arg.toString().split(".")[1].length;
  }	
}
//获取小数的整数形式
FloatCalFun._getIntFromFloat=function(arg){
  if(arg.toString().indexOf(".")==-1){
     return arg;
  }else{
     return Number(arg.toString().replace(".",""));
  } 
}
//乘法
FloatCalFun.floatMulti=function(arg1,arg2){
  var precision1=this._getPrecision(arg1);
  var precision2=this._getPrecision(arg2);
  var tempPrecision=0;
  
  tempPrecision+=precision1;
  tempPrecision+=precision2;
  var int1=this._getIntFromFloat(arg1);
  var int2=this._getIntFromFloat(arg2);
  return (int1*int2)*Math.pow(10,-tempPrecision);
}
//加法
FloatCalFun.floatAdd=function(arg1,arg2){
  var precision1=this._getPrecision(arg1);
  var precision2=this._getPrecision(arg2);
  var temp=Math.pow(10,Math.max(precision1,precision2));
  return (this.floatMulti(arg1,temp)+this.floatMulti(arg2,temp))/temp;
}
//减法
//arg1 被减数
//arg2 减数
FloatCalFun.floatSubtract=function(arg1,arg2){
  var precision1=this._getPrecision(arg1);
  var precision2=this._getPrecision(arg2);
  var temp=Math.pow(10,Math.max(precision1,precision2));
  return (this.floatMulti(arg1,temp)-this.floatMulti(arg2,temp))/temp;
}
////除法
//arg1 被除数
//arg2 除数
FloatCalFun.floatDiv=function(arg1,arg2){
   var precision1=this._getPrecision(arg1);  
   var precision2=this._getPrecision(arg2); 
   var int1=this._getIntFromFloat(arg1);  
   var int2=this._getIntFromFloat(arg2);   
   var result=(int1/int2)*Math.pow(10,precision2-precision1);  
   return result;  
}
FloatCalFun.floatAdd(1.9,0.01);
alert(FloatCalFun.floatAdd(1.9,0.01));
alert(FloatCalFun.floatSubtract(1.9,0.01));
alert(FloatCalFun.floatDiv(1.9,0.01));
alert(FloatCalFun.floatMulti(1.9,0.01));
alert(1.9-0.01);

 

js float类型数据的加减乘除bug修复

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
bug介绍,在ie8及ie8以上的浏览器重访问帖子列表时,会出现如下的bug 而正常的效果应该是下图 原因
修复bug的12个关键步骤 boss:那么,你需要多长时间来修复这个bug? 没有经验的程序员:给我一个小
网站Bug修复与改版 刚从上海回来,以前用ASP实现的网站被要求改版以及把界面美化一下.突然变成了一美
要多少时间才能修复bug,事先是很难知道的,特别是如果你和这些代码还素不相识的话,情况就更加扑朔
从思维漏洞上来审视每一个决定! http://www.apkbus.com/android-11867-1.html 修复bug的12个关键步
不兼容的类 如果你尝试反序列化老代码生成的文件的话。。。 URL配置错误 当你把一个错误的REST URL放
开发测试工作考核数据之---生产环境bug修复及时率   编写背景:   前段时间有不少猎头来电询问
C++中float用32位来表示,f = (-1)^S * T * 2^E,S是符号位,T是尾数,E是指数 首先我们把f表示成科
Json-lib中对于float会默认按double类型处理,因此从数据库中取出的值1.1会变成1.100000023841858 问
参考或转自http://topic.csdn.net/u/20090716/10/CE4A7037-3C0D-40AE-AF85-F702C78FCEA3.html 单精
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号