java中的Double型加减乘除

本文提供了一种使用Java进行高精度算术运算的方法,通过BigDecimal类实现了双精度浮点数的加、减、乘、除运算,并能有效控制运算结果的小数位数。



import java.math.BigDecimal;

public class Arith {
private static final int DEF_DIV_SCALE = 10;

/**
* * 两个Double数相加 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double add(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.add(b2).doubleValue());
}

/**
* * 两个Double数相减 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double sub(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.subtract(b2).doubleValue());
}

/**
* * 两个Double数相乘 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double mul(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.multiply(b2).doubleValue());
}

/**
* * 两个Double数相除 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double div(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)
.doubleValue());
}

/**
* * 两个Double数相除,并保留scale位小数 *
*
* @param v1 *
* @param v2 *
* @param scale *
* @return Double
*/
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(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}


Java 中对 `double` 值进行加减乘除计算时,直接使用运算符(`+`、`-`、`*`、`/`)可以完成基本的计算,但由于 `double` 类是浮点数,在进行计算时可能会出现精度问题。以下是具体示例: ### 加法运算 ```java public class DoubleCalculation { public static void main(String[] args) { double num1 = 0.1; double num2 = 0.2; double result = num1 + num2; System.out.println("加法结果: " + result); } } ``` ### 减法运算 ```java public class DoubleCalculation { public static void main(String[] args) { double m1 = 0.11; double m2 = 0.2; double result = m2 - m1; System.out.println("减法结果: " + result); } } ``` ### 乘法运算 ```java public class DoubleCalculation { public static void main(String[] args) { double num1 = 0.1; double num2 = 0.2; double result = num1 * num2; System.out.println("乘法结果: " + result); } } ``` ### 除法运算 ```java public class DoubleCalculation { public static void main(String[] args) { double num1 = 0.1; double num2 = 0.2; double result = num1 / num2; System.out.println("除法结果: " + result); } } ``` 为了解决 `double` 类计算的精度问题,可以使用 `java.math.BigDecimal` 类。以下是使用 `BigDecimal` 进行加减乘除的示例: ```java import java.math.BigDecimal; public class BigDecimalCalculation { public static void main(String[] args) { BigDecimal num1 = new BigDecimal("0.1"); BigDecimal num2 = new BigDecimal("0.2"); // 加法 BigDecimal addResult = num1.add(num2); System.out.println("加法结果: " + addResult); // 减法 BigDecimal subtractResult = num2.subtract(num1); System.out.println("减法结果: " + subtractResult); // 乘法 BigDecimal multiplyResult = num1.multiply(num2); System.out.println("乘法结果: " + multiplyResult); // 除法 BigDecimal divideResult = num1.divide(num2, 2, BigDecimal.ROUND_HALF_UP); System.out.println("除法结果: " + divideResult); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值