`
fyd222
  • 浏览: 103976 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA精确运算辅助类

阅读更多

源文件Arith.java:

import java.math.BigDecimal;

/**

* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精

* 确的浮点数运算,包括加减乘除和四舍五入。

*/

public class Arith{

    //默认除法运算精度

    private static final int DEF_DIV_SCALE = 10;

    //这个类不能实例化

    private Arith(){

    }

    /**

     * 提供精确的加法运算。

     * @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();

    }

};

分享到:
评论

相关推荐

    java 常用辅助工具类

    - `BigDecimal`:Java内置的高精度浮点数类,用于进行精确的数学计算,避免浮点数运算中的精度问题。 3. **数据库交互**: - `JDBC`(Java Database Connectivity):Java标准API,用于与各种数据库进行交互,...

    java控制台四则运算计算程序源码

    可能包含一个主类,负责整体流程控制,以及辅助类如`Calculator`,用于实现具体的计算逻辑。 8. **测试**:确保程序对各种输入都能正确处理,包括边界条件和异常情况,通常需要编写单元测试或集成测试。 通过学习...

    Java版计算器支持四则混合运算.+-*/()

    需要注意的是,浮点数运算可能会有精度损失,因为计算机无法精确表示所有十进制小数。 在实现这个计算器时,程序设计的基本结构会包括输入解析、运算逻辑和结果输出三个主要部分。输入解析通常会涉及字符串的处理,...

    java房贷计算工具类(商贷、公积金、组合贷)

    `ArithUtil.java`:这个名字暗示这可能是一个数学运算工具类,通常用于提供高效的数学计算或复杂的算法实现。可能包含如复利计算、利率转换为月利率等辅助函数。例如: 1. `convertAnnualRateToMonthly(double ...

    java课程设计报告计算器设计.doc

    3)小数运算:支持浮点数运算,提供精确的计算结果。 4)辅助功能:如清零、退格、查看历史记录等。 1.2.2 用户界面设计 用户界面应简洁明了,包含数字按键0-9、运算符键(+、-、*、/、=)、小数点、清除键(C)、...

    java位运算符之&AND操作视频

    Java语言中的位运算符是编程中的一个重要组成部分,尤其是在处理二进制数据或者进行高效计算时。在Java中,"&"符号被...通过学习和实践,开发者能够编写出更加高效和精确的代码,特别是在处理底层数据结构和算法时。

    java 求圆周率∏值

    Java实现需要进行复杂数学运算,可能需要用到`Complex`类。 在给定的文件中,`CirclePI.java`可能是实现了上述某一种或几种方法的Java代码。同时,`Java.jpg`可能是一个辅助图片,展示了算法的示意图或者运行结果。...

    java贷款计算器

    首先,`BigDecimal`是Java中的一个核心类,用于进行精确的浮点数运算。在处理金钱和贷款计算时,由于浮点数运算可能存在精度问题,使用`BigDecimal`可以避免因四舍五入导致的误差,确保计算结果的准确性。例如,在...

    经纬度计算距离、方位角等java源码

    例如,在百度地图或Google地图API开发中,可以使用这样的工具类来辅助计算用户的位置信息,或者根据起点、目的地和行驶方向计算路径。 由于误差极小,可以忽略,这意味着开发者在编写算法时已经考虑到了地球的曲率...

    Java计算器试验报告(附源代码)

    - 在处理小数参与的运算时,为确保精确性,使用了`java.math.BigDecimal`类。这个类提供高精度的数学运算,避免了浮点数运算的不精确性。例如,使用`multiply()`方法进行乘法运算,并通过`doubleValue()`获取结果的...

    java BigDecimal操作

    在实际开发中,我们可能需要编写这样的辅助类来实现特定的业务需求。 总的来说,理解和熟练运用BigDecimal是每个Java开发者必备的技能之一,特别是在处理货币计算、财务计算等场景时,能够避免因为浮点数精度问题...

    java数值方法

    9. **复数运算**:尽管复数在物理和工程领域广泛应用,Java的`java.math.Complex`类提供了复数的运算支持。 10. **并行计算**:随着多核处理器的普及,利用Java的并发API(如`ExecutorService`和`Future`)进行数值...

    Java单机中国象棋课程设计

    1. **Java编程基础**:整个系统基于Java语言构建,这需要开发者具备扎实的Java语法基础,包括类、对象、接口、继承、多态等面向对象编程概念。同时,理解异常处理、输入输出流、数据类型转换等也是必要的。 2. **...

    高精度运算_高精度运算_

    - 许多编程语言提供了内置的高精度库,如Python的`decimal`模块,Java的`BigInteger`类等,它们已经实现了高效的高精度运算。 - 对于C语言,可以使用GMP(GNU Multiple Precision Arithmetic Library)这样的第三...

    java中期考试复习题

    java.math包提供了用于执行精确算术运算的大数和高精度数值类。 #### 23. Java标准类库 - **选项解析**: - A:java.1ang包包含了Object、Class、System、String和Thread等类。 - B:System类提供了标准输入输出...

    java编写的大整数计算器

    Java提供了`BigInteger`类来支持大整数运算,它允许进行任意精度的算术计算,包括加法、减法、乘法、除法以及更复杂的数学函数如正弦、余弦、正切和余切等。`BigInteger`类是Java的`java.math`包的一部分,设计用于...

    Java面试宝典2013版

    其他非公开类(非内部类)可以有多个,它们可以作为主要类的辅助类。 2. Java中没有`goto`关键字,这与C++和一些其他语言不同。Java推崇的是结构化编程,鼓励使用循环和条件语句来控制程序流程。 3. `&`和`&&`都是...

    常用代码:java日期处理

    - `Calendar`是抽象类,提供日期和时间的通用计算,它是`Date`的辅助类。可以通过`Calendar.getInstance()`获取实例。 3. **`SimpleDateFormat`** - `SimpleDateFormat`是具体的`DateFormat`子类,用于日期和时间...

    java执行字符串公式.docx

    在Java编程中,有时我们需要处理涉及数学计算的任务,特别是在金融或会计领域,要求精确的数值运算。`ProgramService.java` 文件展示了...此外,这个类也可以作为其他业务逻辑的辅助工具,帮助处理需要精确计算的场景。

Global site tag (gtag.js) - Google Analytics