java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:
第一种:BigDecimal(double val)
Translates a double into a BigDecimal.
第二种:BigDecimal(String val)
Translates the String repre sentation of a BigDecimal into a BigDecimal.
使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。
public static double add(double v1,double v2)
public static double sub(double v1,double v2)
public static double mul(double v1,double v2)
public static double div(double v1,double v2)
public static double div(double v1,double v2,int scale)
public static double round(double v,int scale)
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中BigInteger的数学运算,BigDecimal 加减乘除运算,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大...
Java 中 BigDecimal 的常用方法归类(加减乘除) Java 中的 BigDecimal 类提供了对浮点数的精确运算,包括加减乘除和四舍五入等操作。在 Java 中,简单类型不能够精确地对浮点数进行运算,因此需要使用 BigDecimal ...
BigDecimal 类在 Java 中被设计用来处理高精度的浮点数运算,主要应用于财务、金融等领域,因为这些场景中对精度...在实际编程中,应优先使用字符串构造 BigDecimal 对象,并合理设置舍入模式,以避免精度损失和异常。
`BigDecimal`类提供了加减乘除等运算方法,确保了计算结果的精确性。本文将详细介绍如何使用`BigDecimal`实现加减乘除运算。 首先,`BigDecimal`有多种构造方法,这里主要提及两种: 1. `BigDecimal(double val)`:...
8. **运算效率**:连续多次使用`add()`、`subtract()`等方法可能会导致大量中间对象的生成,可以考虑使用`BigDecimal`的`stripTrailingZeros()`方法减少对象数量。 综上,`BigDecimal`是Java中处理精确数值计算的...
当需要进行加减乘除操作时,`BigDecimal` 不支持直接使用传统的算术运算符(+、-、*、/),而是需要调用相应的方法来执行这些操作。以下是 `BigDecimal` 进行加减乘除的基本用法: 1. **加法**:使用 `add()` 方法...
本文将详细探讨如何使用Java语言实现一个简单的计算器,支持加减乘除、开方以及求倒数等功能。 首先,我们需要了解Java的基础语法和控制结构。Java是一种面向对象的编程语言,它的类和对象概念是实现功能的关键。在...
在编程语言中,四则运算...总结,Kotlin中的四则运算是基础但关键的编程概念,理解它们的使用方法和特性对于编写高效、安全的代码至关重要。通过合理运用这些知识,开发者可以在Android应用开发中实现复杂的计算逻辑。
1. **创建BigDecimal对象**:你可以通过传入String表示的数值来创建BigDecimal对象,或者使用`BigDecimal.valueOf()`静态方法,将基本类型(如double)转换为BigDecimal。例如: ```java BigDecimal b1 = new ...
Java Bigdecimal使用原理详解 ...Java Bigdecimal使用原理详解主要介绍了Java Bigdecimal的使用原理,包括构造函数、基本类型的转换、加减乘除运算等。通过详细的示例代码,开发者可以更好地理解和使用BigDecimal类。
例如,当你需要进行货币的加减乘除时,直接使用double或float可能会造成几分钱的误差,这对于财务系统来说是不可接受的。使用BigDecimal类可以确保每一分钱都计算得准确。此外,BigDecimal类还支持舍入模式...
在上述代码中,我们演示了`BigDecimal`的基本用法,包括加减乘除运算以及设置精度和舍入模式。通过这样的方式,我们可以确保在计算过程中不会因为浮点数的精度问题而产生错误的结果。在实际项目中,结合`Arith.java`...
Java编程实现的科学计算器是一个复杂而实用的项目,它不仅涉及到基本的加减乘除运算,还涵盖了更高级的数学功能,如括号处理和大数运算。在本项目中,开发者采用算符优先分析法来处理表达式的优先级,确保了计算的...
`BigDecimal`提供了构造函数来创建任意精度的数字,以及多种方法来进行加、减、乘、除等运算,并且可以控制舍入模式,避免浮点数运算中的精度损失问题。 在项目描述中提到了“运用了类的特性”,这通常意味着项目中...
需要注意的是,`BigDecimal`在进行加减乘除操作时,为了保持精度,通常会生成一个新的`BigDecimal`对象,而不是修改原对象。因此,在转换之前确保所有的计算都已经完成。 在实际开发中,我们还应考虑异常处理。例如...
Java BigDecimal BigDecimal类使用户完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;...加减乘除 add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。 subtract
此外,`BigDecimal`的加减乘除等方法需要明确指定运算规则,例如使用`add()`, `subtract()`, `multiply()`, `divide()`等方法,而不是直接使用算术运算符。 在实际开发中,根据具体需求选择合适的数据类型和运算...
除了基本的使用,BigDecimal还提供了许多其他操作,如加减乘除、比较、乘方等。在实际项目中,开发者可能需要结合这些操作来实现更复杂的计算逻辑。此外,为了优化性能,避免不必要的内存分配,还可以利用BigDecimal...
本篇将详细介绍如何使用Java进行大数的加、减、乘、除以及开方运算。 首先,`BigInteger`类是Java标准库中专门用来处理任意精度整数的类,它可以存储和操作比`long`类型更大的数值。这个类提供了丰富的算术方法,...
BigDecimal提供了加减乘除的方法,并且在除法中可以指定保留的小数位数和舍入模式。 数组是Java中的基础数据结构,对于有序数组,我们可以使用二分查找算法提高查找效率。二分查找的前提是数组已经排序,它通过不断...