`
aahyhaa
  • 浏览: 8234 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多
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);

 

分享到:
评论

相关推荐

    NSDecimalNumber用法加减乘除解决字符串转float类.pdf

    NSDecimalNumber 用法加减乘除解决字符串转float 类 在 iOS 开发中,常常需要对数字进行各种操作,如加减乘除等,然而在实际开发中,会遇到各种问题,如字符串转换为浮点数、精度问题等。这时,NSDecimalNumber ...

    mips整数模拟浮点运算的加减乘除

    mips整数运算模拟IEEE754浮点数运算的加减乘除

    java 实现加减乘除的方法

    Java提供了多种基本数据类型,包括`int`(整型)、`double`(双精度浮点型)和`float`(单精度浮点型),它们都支持加减乘除运算。例如: ```java int a = 5; int b = 3; int sum = a + b; // 加法 int ...

    加减乘除精确算法

    Java的原始数据类型如float和double在处理浮点数运算时,由于二进制浮点数表示的局限性,可能会导致精度丢失,从而影响结果的准确性。针对这一问题,我们可以使用特定的工具类或者数据结构来实现精确的加、减、乘、...

    BigDecimal 加减乘除运算

    Java中BigInteger的数学运算,BigDecimal 加减乘除运算,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大...

    c++第二次实验 设计复数类实现复数的加减乘除运算_Visualc++原代码_

    设计复数类实现复数的加减乘除的运算设计一个银行账户(Account)类,包含户名、帐号以及当前余额属性,可完成开户、存款、取款和查询余额等行为。银行账户类的定义如下:class Account{public: Account(char name[]...

    C#073加减乘除 源代码

    在"**C#073加减乘除 源代码**"的项目中,你可能会找到演示这些运算的实例代码。通过查看源代码,你可以学习如何在实际的C#程序中运用这些基础知识。源代码通常包括函数、条件语句、循环和其他控制结构,以实现更复杂...

    读取文件float类型数据

    本教程将深入探讨如何在不同编程语言中读取包含float类型数据的文件。 1. **Python** 在Python中,可以使用内置的`open()`函数以二进制模式('rb')打开文件,然后使用`struct`模块来解析浮点数。例如: ```python ...

    加减乘除运算用c#编写

    在C#编程语言中,进行...以上就是关于C#中进行加减乘除及求幂运算的基本知识点。为了构建一个完整的运算器,你可能还需要考虑错误处理(如除以零的情况)、用户交互(如获取输入并显示结果)以及其他可能的功能扩展。

    实现加减乘除简单计算器

    2. **变量定义与类型**:C语言需要提前声明变量并指定其数据类型,例如`int`(整型)、`float`(浮点型)或`double`(双精度浮点型)。在计算过程中,可能需要定义变量来存储用户输入的数字和计算结果。 3. **条件...

    威纶通_宏指令_浮点数加减乘除开方计算机

    本教程将深入探讨如何利用威纶通宏指令进行浮点数的加、减、乘、除以及开方运算,这对于进行精准的数学计算和数据处理至关重要。 浮点数运算在很多应用中比整数运算更为复杂,因为它涉及到小数部分的处理。在威纶...

    加减乘除简单算法

    在编程领域,特别是初学者阶段,理解并掌握基础的加减乘除运算至关重要。这里我们以C#语言为例,探讨如何实现一个简单的计算器程序,它能够执行加、减、乘、除四种基本数学运算。 首先,看到代码中使用了.NET框架的...

    c# 加减乘除运算

    + - * / float A = float.Parse(textBox1.Text); float B = float.Parse(textBox2.Text);

    c语言加减乘除的运用简单易懂

    理解并熟练运用加减乘除是编程基础的关键步骤,通过编写和运行简单的程序,如`081208.c`,可以帮助你巩固这些概念。通过不断实践,你会对C语言的运算符有更深入的理解,为后续的编程学习打下坚实的基础。

    高精度 加减乘除 代码

    通常,计算机的内置数据类型(如int、float、double)都有其计算精度限制,对于超出这个范围的数值运算,可能会导致精度损失。为了解决这个问题,我们可以自定义数据结构和算法来实现高精度计算。这里我们以Pascal...

    计算器--简单的加减乘除

    总的来说,“计算器--简单的加减乘除”这一项目涉及了编程中的数据类型选择、精度控制、计算算法优化等多个重要知识点。通过深入理解这些概念和技术,开发者能够创建出既准确又高效的计算器应用,满足用户在各种场景...

    c++模版类 函数重载 矩阵加减乘除等运算

    在这个模板类中,`T`代表我们可以使用任何数据类型(如int、float、double等)来创建矩阵。`getRows`和`getCols`返回矩阵的行数和列数。重载的运算符`+`、`-`和`*`分别对应矩阵的加法、减法和乘法运算。其中,矩阵...

    分数的加减乘除运算Rational Numbers

    例如1/3=0.0000…,它不能使用数据类型double或float的浮点格式精确表示出来,为了得到准确结果,必须使用有理数。 – Java提供了整数和浮点数的数据类型,但是没有提供有理数的类型。 – 由于有理数与整数、...

    通过java代码实现加减乘除的简单算法

    ### 通过Java代码实现加减乘除的简单算法 在本篇文章中,我们将详细解析一个简单的Java程序,该程序能够实现基本的算术运算:加法、减法、乘法和除法,并将结果输出到控制台。这个例子非常适合初学者理解和实践面向...

    Java:接口实现两数的加减乘除

    在本例中,我们将探讨如何通过设计一个接口来实现两数之间的加、减、乘、除操作。 首先,我们创建一个名为`Calculator`的接口,该接口定义了四个方法:`add()`, `subtract()`, `multiply()`, 和 `divide()`,分别...

Global site tag (gtag.js) - Google Analytics