`
henghengdh
  • 浏览: 157525 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

两个double类型相加,控制小数点后的位数

    博客分类:
  • java
 
阅读更多
java中double类型数据的 位数就是这么多位的
  至于 num1是double  num2是int  num1+num2 因为double类型的数据占的字节多  所以java编译器会自己帮你把int类型的数据转换成double 类型的数据 然后再实行两个double类型的数据相加 

DOUBLE操作类
public class DoubleOperationUtil {
    //默认除法运算精度   
    private   static   final   int   DEF_DIV_SCALE   =   10;   


    //这个类不能实例化   
    private   DoubleOperationUtil(){   
    }   


    /**   
      *   提供精确的加法运算。   
      *   @param   v1   被加数   
      *   @param   v2   加数   
      *   @return   两个参数的和   
      */   

    public   static   double   add(double   v1,double   v2){   
            BigDecimal   b1   =   new   BigDecimal(Double.toString(v1));   
            BigDecimal   b2   =   new   BigDecimal(Double.toString(v2));   
            return   b1.add(b2).doubleValue();   
    }   

    /**   
      *   提供精确的减法运算。   
      *   @param   v1   被减数   
      *   @param   v2   减数   
      *   @return   两个参数的差   
      */   

    public   static   double   sub(double   v1,double   v2){   
            BigDecimal   b1   =   new   BigDecimal(Double.toString(v1));   
            BigDecimal   b2   =   new   BigDecimal(Double.toString(v2));   
            return   b1.subtract(b2).doubleValue();   
    }     

    /**   
      *   提供精确的乘法运算。   
      *   @param   v1   被乘数   
      *   @param   v2   乘数   
      *   @return   两个参数的积   
      */   

    public   static   double   mul(double   v1,double   v2){   
            BigDecimal   b1   =   new   BigDecimal(Double.toString(v1));   
            BigDecimal   b2   =   new   BigDecimal(Double.toString(v2));   
            return   b1.multiply(b2).doubleValue();   
    }   



    /**   
      *   提供(相对)精确的除法运算,当发生除不尽的情况时,精确到   
      *   小数点以后10位,以后的数字四舍五入。   
      *   @param   v1   被除数   
      *   @param   v2   除数   
      *   @return   两个参数的商   
      */   

    public   static   double   div(double   v1,double   v2){   
            return   div(v1,v2,DEF_DIV_SCALE);   
    }   



    /**   
      *   提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指   
      *   定精度,以后的数字四舍五入。   
      *   @param   v1   被除数   
      *   @param   v2   除数   
      *   @param   scale   表示表示需要精确到小数点以后几位。   
      *   @return   两个参数的商   
      */   

    public   static   double   div(double   v1,double   v2,int   scale){   
            if(scale<0){   
                    throw   new   IllegalArgumentException("The   scale   must   be   a   positive   integer   or   zero");   
            }   
            BigDecimal   b1   =   new   BigDecimal(Double.toString(v1));   
            BigDecimal   b2   =   new   BigDecimal(Double.toString(v2));   
            return   b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
    }   



    /**   
      *   提供精确的小数位四舍五入处理。   
      *   @param   v   需要四舍五入的数字   
      *   @param   scale   小数点后保留几位   
      *   @return   四舍五入后的结果   
      */   

    public   static   double   round(double   v,int   scale){   
            if(scale<0){   
                    throw   new   IllegalArgumentException("The   scale   must   be   a   positive   integer   or   zero");   
            }   
            BigDecimal   b   =   new   BigDecimal(Double.toString(v));   
            BigDecimal   one   =   new   BigDecimal("1");   
            return   b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
    }   

} 
分享到:
评论

相关推荐

    程序中两个Double类型相加出现误差的解决办法

    当两个Double变量相加时,计算机会进行二进制运算,这个过程中可能会引入微小的误差,虽然人眼难以察觉,但在累计多个这样的计算后,误差会逐渐放大。 例如,题目中提到的171.6与28.17相加,理论结果应该是199.77。...

    强制保留小数点后几位

    根据给定的信息,本文将详细解释如何在编程中实现对浮点数小数位数的精确控制,尤其是在C++环境中如何实现“强制保留小数点后几位”的功能。 ### 强制保留小数点后几位 在计算机科学与程序设计中,处理浮点数时...

    Java中Double除保留后小数位的几种方法(小结)

    Java中Double除保留后小数位的几种方法是指在Java编程语言中,对Double类型数据进行保留小数位的操作。这种操作在实际开发中非常常见,例如在统计成绩、金融计算、科学计算等领域中都需要对Double类型数据进行保留...

    WinCC脚本函数-大数加法(可以有小数)

    WinCC中累加数据时默认数据例如Double或者int等类型不够使用时,可用此函数实现大数加法

    S7300处理64位双精度数,解决PLC常见只能读取32位问题

    5. **数据转换**:如果只涉及到数据的读取和存储,可以在PLC外部(如数据库或上位机程序)进行双精度数到两个32位数的转换,然后将这两个32位数传给PLC进行处理。 在实际应用中,需要根据项目需求和资源条件选择...

    西南交通大学计算机程序设计基础-实验2-C++.docx

    在输出时,利用`fixed`和`precision`函数控制小数点后的位数。 2. **计算万有引力**:根据万有引力公式,我们需要预先定义常量`G`(引力常数)、`m1`(太阳质量)、`m2`(地球质量)和`R`(太阳与地球的距离)。...

    Java 计算类

    4. 除法操作(div):此方法除了接受两个字符串类型的参数外,还额外接受一个整数类型的参数,用来指定除法操作后小数点后的保留位数。这个方法能够进行精确的除法计算,并通过BigDecimal的divide方法控制舍入行为。...

    C++数据精度问题(对浮点数保存指定位小数)

    这两个头文件提供了流操作和输入输出格式控制的功能,可以方便地帮助我们对浮点数进行精度控制。 首先,我们需要引入头文件并使用`std`命名空间: ```cpp #include #include using namespace std; ``` 接下来,...

    ACM高精度计算,非常详细适合入门

    例如,`double`类型通常只有64位,最多精确到小数点后15-16位。因此,当需要处理超过这些限制的数值时,我们需要采用特殊的方法来表示和操作大整数。 解决大整数计算的基本思路是使用数组来存储每一位数字。例如,...

    dashu.rar_dashu

    首先,两个大数要对齐,即相同位数对齐,然后从低位开始逐位相加,如果某一位相加大于9,则需要向高位进位。对于浮点数大数,情况稍复杂,需要考虑到小数点的位置和指数部分的处理。 例如,如果我们有两个大数,...

    java中BigDecimal的操作方法

    BigDecimal还提供了其他一些方法,如`compareTo()`用于比较两个BigDecimal对象的大小,`scale()`获取小数点后的位数,`stripTrailingZeros()`去除尾部的零,`toPlainString()`返回不包含科学记数法的字符串表示等。...

    奥林匹克金牌之路(信息学).doc

    - 文件只有一行,即两个正整数相加后的和。 **示例:** ``` Input.txt: 123 872 Output.txt: 995 ``` **解决方案步骤:** 1. **数据的接收及存储问题:** - 由于数字可能非常大,无法用常规的数据类型来存储,...

    C语言浮点数运算

    - **987654321 + 987.654322的结果不是987655308.654322**:当两个相差较大的数相加时,较小的数对结果的影响可能因精度损失而变得微乎其微。 #### 五、精确比较浮点数的方法 由于浮点数运算中的精度问题,直接...

    WIN7计算器

    1. `Number0` 和 `Number1`:这两个变量被声明为 `Double` 类型,意味着它们将用来存储可能包含小数的数值。在计算器中,这些变量可能代表用户输入的两个操作数。 2. `XiaoShuDian`:这是一个 `Boolean` 类型的变量...

    高精度计算

    然而,在实际应用中,如求解圆周率π的值时,可能需要保留小数点后100位以上的精度,这超出了基本数据类型的表示能力。因此,高精度计算应运而生,以满足这类特殊需求。 #### 大整数的表示与存储 大整数,即超出...

    c语言程序设计报告-超大数据的运算.doc

    4. 四则运算:大数的加减法需要考虑到符号和小数点的位置,确保数字对齐后进行逐位相加或相减。乘法可以使用扩展的学校乘法算法,而除法则相对复杂,可能需要使用迭代或搜索方法来确定商和余数。 5. 阶乘运算:大数...

    PHP中对于浮点型的数据需要用不同的方法解决

    1. `bcadd`:将两个高精度数字相加。它接受两个字符串作为参数,表示高精度数字,并可以指定一个可选的`scale`参数来控制结果的小数位数。 2. `bccomp`:比较两个高精度数字并返回-1、0或1,表示第一个数小于、等于...

    C语言超大数四则运算PPT课件.pptx

    对于浮点数,`float`有32位精度,大约精确到小数点后6或7位,而`double`有64位精度,精确度可达小数点后15或16位。 在进行大数运算时,常见的方法是使用数组来存储和表示大整数。每个数组元素代表大整数中的一个...

    字符串转换程序

    该示例展示了如何使用`atof()`函数将两个字符串转换为浮点数并相加。 ### atoi()函数详解 `atoi()`函数用于将字符串转换为整型(`int`)数值。该函数原型定义如下: ```c int atoi(const char *nptr); ``` - **...

Global site tag (gtag.js) - Google Analytics