Java-金融类计算

Java有两大数据类型。

  1. 内置(byte-0, short-0, int-0, long-0L, float-0.0f, double-0.0d, boolean-false, char-/u0000, String-null) void
  2. 引用(对象数组)默认均为null。

对于几个基本数据类型,里面的哪一种都不适合进行货币计算,可能会存在潜在的精度损失。因此可以使用BigDecimal类型计算。

import java.math.BigDecimal;
public class DoubleTest {

    private static double mul(double d1,double d2){
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));
        return bd1.multiply(bd2).doubleValue();
    }

    public static void main(String[] args) {
        double yuanDouble = 10.2d;
        System.out.println(yuanDouble);
        double fenDouble = mul(yuanDouble, 100);
        System.out.println(fenDouble);
        int fenInteger = (int)fenDouble; // 截断成int
        System.out.println(fenInteger);
    }
}

BigDecimal缺点:与使用基本运算类型相比,操作BigDecimal很不方便,而且很慢。