BigDecimal(加减乘除)运算
·
BigDecimal 是 Java 编程语言中的一个类,位于 java.math 包中。这个类用于表示不可变的、任意精度的十进制数。BigDecimal 由两个独立的部分组成:一个任意精度的整数(不可变的大整数)和一个比例,后者用于确定数值的实际位置。
使用场景
- 金融计算:由于
BigDecimal提供了高精度的计算能力,因此非常适合用于财务系统中,确保金额计算的准确性。 - 科学计算:在需要高精度结果的科学计算中,
BigDecimal同样非常有用。 - 任何需要精确数值的地方:例如,当处理用户输入的数据时,如果这些数据涉及到了小数点后的数字,使用
BigDecimal可以避免浮点数运算中的精度损失。
一、四则运算
1.加法 (add)
示例:
// 创建 BigDecimal 对象
BigDecimal number1 = new BigDecimal("123.45");
BigDecimal number2 = new BigDecimal("67.89");
// 加法
BigDecimal sum = number1.add(number2);
System.out.println("Sum: " + sum); // 输出: Sum: 191.34
2.减法 (subtract)
示例:
// 创建 BigDecimal 对象
BigDecimal number1 = new BigDecimal("123.45");
BigDecimal number2 = new BigDecimal("67.89");
// 减法
BigDecimal difference = number1.subtract(number2);
System.out.println("Difference: " + difference); // 输出: Difference: 55.56
3.乘法(multiply)
示例:
// 创建 BigDecimal 对象
BigDecimal number1 = new BigDecimal("123.45");
BigDecimal number2 = new BigDecimal("67.89");
// 乘法
BigDecimal product = number1.multiply(number2);
System.out.println("Product: " + product); // 输出: Product: 8372.8005
//处理小数
setScale(1) 表示保留一位小数,默认为四舍五入
4.除法(divide)
示例:
// 创建 BigDecimal 对象
BigDecimal number1 = new BigDecimal("123.45");
BigDecimal number2 = new BigDecimal("67.89");
// 除法
BigDecimal quotient = number1.divide(number2, 2, BigDecimal.ROUND_HALF_UP);
System.out.println("Quotient: " + quotient); // 输出: Quotient: 1.82
注:使用BigDecimal时必须要用结果接收,不可以直接写(number1.add(number2))
5.比较大小
compareTo 方法是 BigDecimal 类中的一个重要方法,用于比较两个 BigDecimal 对象的值。该方法返回一个整数,表示两个 BigDecimal 对象之间的相对大小关系。具体来说,compareTo 方法的返回值有以下三种情况:
返回值为负数(< 0):表示调用 compareTo 方法的对象小于传入的参数。
返回值为零(== 0):表示调用 compareTo 方法的对象等于传入的参数。
返回值为正数(> 0):表示调用 compareTo 方法的对象大于传入的参数
int comparison = num1.compareTo(num2);
if (comparison > 0) {
System.out.println(num1 + " is greater than " + num2);
} else if (comparison < 0) {
System.out.println(num1 + " is less than " + num2);
} else {
System.out.println(num1 + " is equal to " + num2);
}
6.转换类型
6.1:intValue 方法是 BigDecimal 类中的一个方法,用于将 BigDecimal 对象转换为 int 类型的值。这个方法会丢弃小数部分,只保留整数部分。如果 BigDecimal 的值超出了 int 类型的范围(即 -2^31 到 2^31 - 1),则会抛出 ArithmeticException 异常。
6.2:doubleValue 方法是 BigDecimal 类中的一个方法,用于将 BigDecimal 对象转换为 double 类型的值。这个方法会将 BigDecimal 的值尽可能精确地转换为 double 类型,但需要注意的是,由于 double 类型的精度限制,转换后的值可能会有一定的误差。
//intValue转换类型
int intValue = num1.intValue();
long longValue = num1.longValue();
double doubleValue = num1.doubleValue();
System.out.println("Int value: " + intValue); // 输出: Int value: 123
System.out.println("Long value: " + longValue); // 输出: Long value: 123
System.out.println("Double value: " + doubleValue); // 输出: Double value: 123.45
更多推荐



所有评论(0)