BigDecimal

因为double类型所定义的浮点数并不是精确的,比如在定义一个double类型a=1.0,b=0.9,a-b的结果并不会等于0.1而是0.9999999998

所以在进行浮点数的精确计算时,就不能用double或者float,而是BigDecimal

复制代码
public class Demo04 {
    public static void main(String[] args) {
        double a = 1.0;
        double b = 0.9;
        
        System.out.println(a-b);//结果为0.099999999999998

        //BigDecimal,大的浮点数精确计算
        BigDecimal b1 = new BigDecimal("1.0");
        BigDecimal b2 = new BigDecimal("0.9");
        //减法
        BigDecimal r1 = b1.subtract(b2);
        System.out.println(r1);          //0.1

        //加法
        BigDecimal r2 = b1.add(b2);
        System.out.println(r2);          //1.9

        //乘法
        BigDecimal r3 = b1.multiply(b2);
        System.out.println(r3);          //0.98

        //除法,执行除法运算时,除不尽会报错
        BigDecimal r4 = new BigDecimal("1.4")
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal("0.9"));
        System.out.println(r4);          //1

        //除不尽时                                                                保留两位小数        四舍五入
        BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
        System.out.println(r5);          //3.33
    }
}
复制代码

posted @   长空扯淡  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示