`

BigDecimal对象的用法(加减乘除 + 四舍五入)

    博客分类:
  • java
阅读更多
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();
}
};




最后整理了一下BigDecimal 的比较大小。



		BigDecimal num1 = new BigDecimal("0");
		BigDecimal num2 = new BigDecimal("1");
		BigDecimal num3 = new BigDecimal("2");
		
		BigDecimal num = new BigDecimal("1"); //用做比较的值
		
		System.out.println(num1.compareTo(num));	//小于 时,返回 -1
		System.out.println(num2.compareTo(num));	//等于 时,返回 0
		System.out.println(num3.compareTo(num));	//大于 时,返回 1


这是输出结果:  -1,0 ,1
解释下载注释里面了。




补充:

BigInteger 也可以存放比较大的数, 和 BigDecimal 的区别是 :BigInteger 存放的是大的整数,而BigDecimal 存放大的小数





继续补充一下,用BigDecimal 写个for循环。

		for (BigDecimal i = new BigDecimal("0"); i.compareTo(new BigDecimal("10")) != 1; i = i.add(new BigDecimal("1"))) {
			System.out.print(i + "\t");
		}

控制台打印的是从0 到 10 。



分享到:
评论

相关推荐

    BigDecimal 加减乘除运算

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

    Java对BigDecimal常用方法的归类(加减乘除).doc

    Java 中 BigDecimal 的常用方法归类(加减乘除) Java 中的 BigDecimal 类...使用 BigDecimal 类可以提供精确的浮点数运算,包括加减乘除和四舍五入等操作。在实际开发中,需要根据具体情况选择合适的精度和舍入模式。

    BigDecimal加减乘除计算

    这里 `20` 表示保留20位小数,`ROUND_HALF_UP` 是舍入模式,表示四舍五入。 6. 舍入模式(RoundingMode): BigDecimal 支持八种舍入模式,如: - ROUND_UP:向上舍入,远离零,始终增加数字。 - ROUND_DOWN:...

    【Java】BigDecimal实现加减乘除运算代码

    `BigDecimal`类提供了加减乘除等运算方法,确保了计算结果的精确性。本文将详细介绍如何使用`BigDecimal`实现加减乘除运算。 首先,`BigDecimal`有多种构造方法,这里主要提及两种: 1. `BigDecimal(double val)`:...

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

    8. **运算效率**:连续多次使用`add()`、`subtract()`等方法可能会导致大量中间对象的生成,可以考虑使用`BigDecimal`的`stripTrailingZeros()`方法减少对象数量。 综上,`BigDecimal`是Java中处理精确数值计算的...

    java中BigDecimal进行加减乘除的基本用法

    当需要进行加减乘除操作时,`BigDecimal` 不支持直接使用传统的算术运算符(+、-、*、/),而是需要调用相应的方法来执行这些操作。以下是 `BigDecimal` 进行加减乘除的基本用法: 1. **加法**:使用 `add()` 方法...

    Kotlin 四则运算 (加、减、乘、除)

    在编程语言中,四则运算...总结,Kotlin中的四则运算是基础但关键的编程概念,理解它们的使用方法和特性对于编写高效、安全的代码至关重要。通过合理运用这些知识,开发者可以在Android应用开发中实现复杂的计算逻辑。

    Java计算器 实现最简单的加减乘除、开方、求倒数等

    本文将详细探讨如何使用Java语言实现一个简单的计算器,支持加减乘除、开方以及求倒数等功能。 首先,我们需要了解Java的基础语法和控制结构。Java是一种面向对象的编程语言,它的类和对象概念是实现功能的关键。在...

    使用BigDecimal进行精确运算(实现加减乘除运算)

    在这个工具类中,`div`方法还涉及到除法的舍入模式,`roundingMode`可以根据需求选择,比如`RoundingMode.HALF_UP`(四舍五入)。 需要注意的是,BigDecimal的除法操作可能会抛出`ArithmeticException`,因为除不尽...

    Java中BigDecimal类的简单用法

    此外,BigDecimal类还支持舍入模式(RoundingMode),在进行除法运算时,如果需要四舍五入或者按照特定规则处理余数,可以通过setScale(int newScale, RoundingMode roundingMode)方法来实现。总之,Java中的...

    运用BigDecimal精确计算

    在上述代码中,我们演示了`BigDecimal`的基本用法,包括加减乘除运算以及设置精度和舍入模式。通过这样的方式,我们可以确保在计算过程中不会因为浮点数的精度问题而产生错误的结果。在实际项目中,结合`Arith.java`...

    Java Bigdecimal使用原理详解

    Java Bigdecimal使用原理详解 ...Java Bigdecimal使用原理详解主要介绍了Java Bigdecimal的使用原理,包括构造函数、基本类型的转换、加减乘除运算等。通过详细的示例代码,开发者可以更好地理解和使用BigDecimal类。

    Java中使用的常用数学类

    本文将深入探讨Java中常用的数学类以及如何进行精确的浮点数运算,包括加减乘除、四舍五入以及百分数转换。 首先,我们来看`BigDecimal`类。它是一个任意精度的十进制数,能够提供精确的浮点数运算。这是因为Java中...

    android精度显示

    除了基本的使用,BigDecimal还提供了许多其他操作,如加减乘除、比较、乘方等。在实际项目中,开发者可能需要结合这些操作来实现更复杂的计算逻辑。此外,为了优化性能,避免不必要的内存分配,还可以利用BigDecimal...

    Java使用BigDecimal进行高精度计算的示例代码

    在实际应用中,可以提供工具类来进行精确的浮点数运算,包括加减乘除和四舍五入。例如: import java.math.BigDecimal; public class ArithUtil { private static final int DEF_DIV_SCALE = 6; // 默认除法运算...

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

    - **算术运算**:`BigDecimal`支持加减乘除等基本算术运算,以及四舍五入等功能。 ```java public static BigDecimal add(BigDecimal v1, BigDecimal v2) { return v1.add(v2); } public static BigDecimal ...

    java代码-BigDecimal转String

    需要注意的是,`BigDecimal`在进行加减乘除操作时,为了保持精度,通常会生成一个新的`BigDecimal`对象,而不是修改原对象。因此,在转换之前确保所有的计算都已经完成。 在实际开发中,我们还应考虑异常处理。例如...

    java做的科学计算器(支持+-*/括号)

    Java编程实现的科学计算器是一个复杂而实用的项目,它不仅涉及到基本的加减乘除运算,还涵盖了更高级的数学功能,如括号处理和大数运算。在本项目中,开发者采用算符优先分析法来处理表达式的优先级,确保了计算的...

    JavaDemical:Java 数字API

    Java BigDecimal BigDecimal类使用户完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;...加减乘除 add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。 subtract

    Java编写的大数运算

    `BigDecimal`提供了构造函数来创建任意精度的数字,以及多种方法来进行加、减、乘、除等运算,并且可以控制舍入模式,避免浮点数运算中的精度损失问题。 在项目描述中提到了“运用了类的特性”,这通常意味着项目中...

Global site tag (gtag.js) - Google Analytics