怎么用BigDecimal实现大数字运算?

来源:互联网 发布:人工智能与工业革命 编辑:程序博客网 时间:2024/04/28 18:59

一般float和double型数据用来做科学计算与工程计算,当用于商业计算中要求数字精度比较高时,就要用到java.math.BigDecimal类


import java.math.BigDecimal;class BigDecimalDemo {static final int location = 10; //小数点后位数//加法 返回 num1+num2public double add(double num1, double num2){BigDecimal b1 = new BigDecimal(num1);BigDecimal b2 = new BigDecimal(num2);return b1.add(b2).doubleValue();}//减法 返回 num1-num2public double sub(double num1, double num2){BigDecimal b1 = new BigDecimal(num1);BigDecimal b2 = new BigDecimal(num2);return b1.subtract(b2).doubleValue();}//乘法 返回 num1*num2public double mul(double num1, double num2){BigDecimal b1 = new BigDecimal(num1);BigDecimal b2 = new BigDecimal(num2);return b1.multiply(b2).doubleValue();}//除法 返回 num1/num2public double div(double num1, double num2){return div(num1,num2,location);}//除法 返回num1/num2 自定义小数点后位数public double div(double num1, double num2, int _location){BigDecimal b1 = new BigDecimal(num1);BigDecimal b2 = new BigDecimal(num2);return b1.divide(b2,_location,BigDecimal.ROUND_HALF_UP).doubleValue();}public static void main(String[] args) {BigDecimalDemo bd = new BigDecimalDemo();System.out.println(bd.add(12.123123,2));  //14.123123System.out.println(bd.sub(12.123,5.1)); //7.023System.out.println(bd.mul(9.99999,8.8888)); //88.887911112System.out.println(bd.div(13,3));  //4.3333333333  小数点后10位System.out.println(bd.div(13,3,20));  //4.333333333333333  小数点后15位double b = 4.123123123123123123123123123;  //4.123123123123123   double小数点后15位System.out.println(b);BigDecimal b2 = new BigDecimal(4.123123123123123123123123123); //4.12312312312312290174531881348229944705963134765625System.out.println(b2);}}


原创粉丝点击