`

Java中精确计算的一个类用BigDecimal

    博客分类:
  • java
阅读更多
 
 
/* 
* 
* 如果需要精确计算,非要用String来够造BigDecimal不可 
*/ 
package com.lims.actions.testqc.comm; 

/** 
* @author Jstar 
* 
* 
* 窗口 > 首选项 > 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实现的浮点类的精确计算

    描述中的"Java实现的浮点类的精确计算"很可能就是指一个自定义的工具类,该类可能封装了`BigDecimal`的使用,或者使用其他算法来实现浮点数的精确运算。这样的工具类通常会包含一系列静态方法,如加法、减法、乘法、...

    java BigDecimal操作

    在Java编程语言中,BigDecimal类是用于处理高精度、大范围浮点数的工具,它在需要精确计算的场景下非常关键。BigDecimal提供了避免浮点数运算中的精度损失的方法,适用于金融、会计等对精度有严格要求的领域。这篇...

    java中BigDecimal的操作方法

    在Java编程语言中,BigDecimal是用于处理高精度和可配置精度的十进制数的类。在进行商业计算时,由于浮点数(double和float)存在精度问题,不能保证准确的结果,因此通常推荐使用BigDecimal来确保计算的精确性。本文...

    BigDecimal工具类.docx

    BigDecimal工具类提供了多种精确的数学运算方法,满足了我们在实际开发中对高精确计算的需求。同时,该工具类还提供了很多实用的方法,使得我们可以更方便地进行数学运算。 知识点: 1. BigDecimal工具类是Java中...

    java-BigInteger-BigDecimal类源码

    在Java编程语言中,`BigInteger`和`BigDecimal`是两个重要的类,它们分别用于处理大整数和高精度浮点数。这两个类位于`java.math`包下,为开发者提供了超越基本数据类型(如int、long和double)的计算能力。在深入...

    Java中BigDecimal的加减乘除、比较大小与使用注意事项

    在Java编程中,当涉及到需要精确数值计算的场景时,我们通常会使用`BigDecimal`类。这是因为`float`和`double`类型虽然适用于科学计算和工程计算,但它们基于二进制浮点运算,不能保证完全精确的结果。而`BigDecimal...

    运用BigDecimal精确计算

    `BigDecimal`是Java `java.math`包下的一个类,它提供了任意精度的有符号十进制数。其设计目标是支持任意精度的算术运算,确保结果的精确性。在处理货币计算、金融数据或其他需要精确数值计算的场景中,`BigDecimal`...

    Java中BigDecimal类的简单用法

    总之,Java中的BigDecimal类是处理精确数值计算的重要工具,尤其是在金融、会计等对精度要求极高的领域。通过使用其提供的各种构造方法和运算方法,开发者可以有效地控制计算过程中的精度,确保计算结果的正确性。...

    BigDecimal 加减乘除运算

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

    Java中BigDecimal类的使用详解

    Java中BigDecimal类是Java.math包中提供的一个API类,用于对超过16位有效位的数进行精确的运算。由于浮点数的精度问题,Java中浮点数的计算会失去一定的精确度。因此,使用BigDecimal类可以避免浮点数的精度问题,...

    Java 精确计算-double-float-String

    描述中提到的链接指向了一个具体的博客文章,虽然内容无法在此提供,但我们可以根据常规的Java精确计算方法来展开讨论。 通常,Java中的`double`和`float`类型在进行数学运算时由于二进制浮点数的表示方式,会存在...

    BigDecimal的计算

    `BigDecimal` 是 Java 中的一个类,它能够提供对任意精度的十进制数的支持。通过使用 `BigDecimal`,可以避免由于二进制浮点数的有限精度带来的舍入误差问题。 ##### 2. 构造方法与静态工厂方法 `BigDecimal` 提供...

    BigDecimal加减乘除计算

    BigDecimal 类在 Java 中被设计用来处理高精度的浮点数运算,主要应用于财务、金融等领域,因为这些场景中对精度要求非常高。BigDecimal 提供了加法(add())、减法(subtract())、乘法(multiply())和除法...

    BigDecimal使用

    BigDecimal 使用 BigDecimal 是 Java 中一个用于处理金融和商业应用的类,其主要功能是提供高精度的数字计算。...BigDecimal 是一个非常有用的工具类,能够提供高精度的数字计算,广泛应用于金融、商业等领域。

    关于java中BigDecimal的简介(csdn)————程序.pdf

    Java中的`BigDecimal`类是用于表示和操作高精度浮点数的重要工具,尤其适用于需要进行精确计算的场景,如财务和货币计算。由于基本数据类型`double`和`float`在进行大数值或高精度计算时可能会导致精度丢失,因此`...

    BigDecimal开n次方根

    复杂的BigDecimal计算,需要开方的式子,可输入结果精确位数

    MyEditTextApplication输入框BigDecimal计算价格

    BigDecimal是Java提供的一个大数类,它可以用来进行精确的浮点数运算,避免了传统浮点数运算中可能出现的精度损失问题。在金融或会计系统中,对数据的精度要求很高,BigDecimal就成为首选的数据类型。 在...

    Java中实现浮点数的精确计算

    ### Java中实现浮点数的精确计算 在Java编程中,使用`float`和`double`类型进行浮点数计算时经常会遇到精度丢失的问题。这是因为浮点数在计算机内部是以二进制形式存储的,而某些十进制小数无法用二进制精确表示,...

    解析Java中的精确计算方法.pdf

    "Java中的精确计算方法" Java语言中,浮点数是一种常用的数值类型,但是它并不是非常精确的。浮点数的计算结果可能会出现舍入误差,导致结果不符合预期。这种情况在金融计算、科学计算等领域中尤其重要。 IEEE 754...

    BigDecimal计算

    在Java编程语言中,`BigDecimal`类是用于表示和操作大数(通常涉及财务或精确数学计算)的重要工具。由于浮点数(如`float`和`double`)在计算机中是以近似值存储的,这可能导致计算结果的不精确性,尤其是在进行...

Global site tag (gtag.js) - Google Analytics