Java double和BigDecimal

Java double和BigDecimal


1. double
package com.bigDecimalDemo.Demo01;

public class Demo01 {
    public static void main(String[] args) {
        double d1 = 1.0;
        double d2 = 0.9;
        System.out.println(d1-d2);

        // 面试题
        double result = (1.4 - 0.5) / 0.9;
        System.out.println(result);

    }
}

关于第一个输出,结果是0.0999999999998

原因是,Java中不管是double类型还是float 存储的都是一个近似值,可能以为结果是1,但是其实可能是0.9999999。解决方法:使用BigDecimal

2. BigDecimal

位置:java.math包中。
作用:精确计算浮点数。
创建方式:BigDecimal bd = new BigDecimal(“1.0”)

注意:实例化BigDecimal的时候,要选择传入字符串,假如你传的是一个数字类型,可能传过去会变成0.9999999

使用方法:(减法)subtract

package com.bigDecimalDemo.Demo01;

import java.math.BigDecimal;

public class Demo02 {
    public static void main(String[] args) {
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");

        BigDecimal r1 = bd1.subtract(bd2);
        System.out.println(r1);

    }
}

使用方法:(加法)add

package com.bigDecimalDemo.Demo01;

import java.math.BigDecimal;

public class Demo02 {
    public static void main(String[] args) {
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");

        BigDecimal r1 = bd1.add(bd2);
        System.out.println(r1);

    }
}

使用方法:(乘法)multiply

package com.bigDecimalDemo.Demo01;

import java.math.BigDecimal;

public class Demo02 {
    public static void main(String[] args) {
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");

        BigDecimal r1 = bd1.multiply(bd2);
        System.out.println(r1);

    }
}

使用方法:(除法)divide

package com.bigDecimalDemo.Demo01;

import com.oop.demo05.B;

import java.math.BigDecimal;

public class Demo02 {
    public static void main(String[] args) {

        BigDecimal r2 =  new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
        System.out.println(r2);
    }
}

除法可能会出现除不尽的可能,解决方法:BigDecimal提供了一些api,如:BigDecimal.ROUND_HALF_UP

package com.bigDecimalDemo.Demo01;

import com.oop.demo05.B;

import java.math.BigDecimal;

public class Demo02 {
    public static void main(String[] args) {

        BigDecimal r2 =  new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
        System.out.println(r2);
    }
}

你可能感兴趣的:(java)