BigDecimal的用途及示例分享

乔欣 Java教程 发布时间:2023-01-23 21:59:07 阅读数:2412 1
下文笔者讲述使用java代码实现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);
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202301/5503.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者