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.math.BigDecimal的使用方法. JAVA基础:java.math.BigDecimal的使用方法.
### BigDecimal的计算 #### 概述 在Java中,`BigDecimal` 类提供了对超过16位有效数字的十进制数进行精确算术运算的能力。它适用于金融计算、科学计算等场景,在这些场景中,使用浮点数(如 `float` 和 `double`)...
综上所述,BigDecimal到Double的转换是一项常用的操作,特别是在处理需要高精度计算的应用程序中。虽然使用doubleValue()方法可以直接完成转换,但是在某些场景下需要注意可能出现的精度损失问题。为了避免这些问题...
BigDecimal工具类提供了多种精确的数学运算方法,满足了我们在实际开发中对高精确计算的需求。同时,该工具类还提供了很多实用的方法,使得我们可以更方便地进行数学运算。 知识点: 1. BigDecimal工具类是Java中...
BigDecimal有四种构造方法,但是我们最常用的两种是:BigDecimal(double val)和BigDecimal(String val)。其中,BigDecimal(double val)将一个double类型的变量转换为BigDecimal,而BigDecimal(String val)将一个字符...
`BigDecimal` 类是 Java 中用于高精度浮点数计算的关键工具,主要...总的来说,`BigDecimal` 是 Java 中处理高精度计算的首选工具,通过其提供的方法可以确保在财务计算和其他需要精确数值操作的场景下得到准确的结果。
本文主要介绍了 Java 中的 BigDecimal 和 double 的示例及相关问题解析,展示了 BigDecimal 的常用方法和使用示例,展示了使用 BigDecimal 进行四则运算的示例,最后总结了 BigDecimal 的优点。
BigDecimal类位于java.math类包下,提供了多种构造函数和方法来实现精确计算。 首先,我们来看下如何构造一个BigDecimal对象。它的构造函数很多,这里挑选最常用的两个来演示一下:一个就是BigDecimal(double val)...
在Java编程中,要实现精确的数值计算,必须跳出float和double的限制,转而使用Decimal和BigDecimal。Decimal类型通常用于需要固定小数点精度的场景,而BigDecimal则提供了完全的高精度数值运算能力。BigDecimal特别...
BigDecimal 有多种构造函数,其中 double 和 String 是两个常用的构造函数。double 构造函数的结果有一定的不可预知性,例如 new BigDecimal(0.1) 不等于 0.1,而是等于 0....
在Java编程语言中,`BigDecimal` 类位于 `java.math`...总的来说,`BigDecimal` 类是Java中处理高精度计算的重要工具,理解其构造函数和方法的用法,以及如何避免精度问题,对于编写准确的财务或科学计算程序至关重要。
在Java编程中,BigDecimal类是用于处理大数值和精确浮点计算的重要工具,尤其是在金融或会计领域,确保了计算的精确性。本示例代码主要关注如何使用BigDecimal进行四舍五入操作,以保留两位小数,并将金额从单位分...
在Java编程语言中,`BigDecimal` 类位于 `java.math` 包下,它提供了一种进行高精度和任意精度的十进制算术运算的方法。`BigDecimal` 是为那些需要精确数值计算的场景设计的,比如金融计算或会计应用,因为普通的 `...
#### 五、BigDecimal类常用方法 `BigDecimal`类提供了高精度的算术运算,适用于金融和科学计算领域。 1. **add() 方法**:加法。 2. **subtract() 方法**:减法。 3. **multiply() 方法**:乘法。 4. **divide() ...
在Java编程中,`BigDecimal` 类是用于进行高精度浮点数运算的,它解决了`float`和`double`类型在处理大数或精确计算时存在的精度问题。然而,在使用`BigDecimal`进行除法操作时,如果不进行特殊处理,可能会遇到`...
1. `Math`类的常用方法: - `Math.sqrt(x)`:计算平方根 - `Math.pow(x, y)`:求x的y次幂 - `Math.log(x)`:计算自然对数 - `Math.pow(x, 1.0 / y)`:计算x的1/y次方,等效于开方 - `Math.sin(x)`、`Math.cos(x...
四舍五入是一种常用的数字截断方法,经常用于金融、科学计算和其他领域。 在 Java 语言中,四舍五入方法可以通过多种方式实现,包括使用 Math 类的方法、DecimalFormat 类的方法和 BigDecimal 类的方法。 1. 使用 ...
另外,`BigDecimal`类用于高精度的浮点数运算,避免了浮点数计算时可能出现的精度问题。 3. **IP地址处理**:Java的`InetAddress`类可以用来获取和解析IP地址。它提供了`getByName`方法用于根据主机名获取IP,以及`...
"java高精度计算算法与分析" java高精度计算是指在java编程语言中对数字进行高精度计算的方法和技术。...但是,java高精度计算也可能会出现性能问题和复杂性,因此需要根据实际情况选择合适的计算方法。
常用的方法包括length()返回字符串长度,charAt()获取指定索引位置的字符,getChars()用于将字符串内容复制到字符数组中。equals()和equalsIgnoreCase()分别用于比较字符串内容是否相等,前者区分大小写,后者不区分...