BigDecimal的用途及示例分享
下文笔者讲述使用java代码实现BigDecimal的工具类及示例分享,如下所示
使用BigDecimal类即可避免精度类的异常问题
我们都知道java在进行浮点型计算时
会出现精度丢失的现象
例:精度丢失的示例说明
package com.java265;
public class BigDecimalTest {
public static void main(String[] args) {
double d1=0.05;
double d2=0.01;
double d3=d1+d2;
System.out.println("d1+d2="+d3);
}
}
----运行以上代码,将输出以下信息----
d1+d2=0.060000000000000005
解决方法使用BigDecimal类即可避免精度类的异常问题
package com.java265;
import java.math.BigDecimal;
/**
*BigDecimal使用示例
*/
public class BigDecimalTest {
public static void main(String[] args) {
double d1=0.05;
double d2=0.01;
double d3=d1+d2;
System.out.println("d1+d2="+d3);
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
BigDecimal b3 = b1.add(b2);
System.out.println("b1+b2="+b3);
}
}
------运行以上代码,将输出以下信息--------
d1+d2=0.060000000000000005
b1+b2=0.06
下文是笔者编写的BigDecimal工具类,如下所示
BigDecimal常用工具类:
package com.java265;
import java.math.BigDecimal;
/**
* BigDecimal常用工具类
*/
public class BigDecimalUtil {
public static BigDecimal add(double d1, double d2) {
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.add(b2);
}
public static BigDecimal sub(double d1, double d2) {
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.subtract(b2);
}
public static BigDecimal mul(double d1, double d2) {
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.multiply(b2);
}
/**
* divide(BigDecimal divisor, int scale, int roundingMode)
* 该方法第二个参数scale表示保留小数点后几位小数
* 该方法第三个参数roundingMode常用于设置四舍五入ROUND_HALF_UP
*/
public static BigDecimal div(double d1, double d2) {
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP);
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


