Java中实现浮点数的精确运算

2014-10-19 16:11:17 · 作者: · 浏览: 113

  package com.lv;


  import java.math.BigDecimal;


  public class Arith {


  public static double add(double v1,double v2){


  BigDecimal b1=new BigDecimal(Double.toString(v1));


  BigDecimal b2=new BigDecimal(Double.toString(v2));


  return b1.add(b2).doubleva l_rue();


  }


  public static double sub(double v1,double v2){


  BigDecimal b1=new BigDecimal(Double.toString(v1));


  BigDecimal b2=new BigDecimal(Double.toString(v2));


  return b1.subtract(b2).doubleva l_rue();


  }


  public static double mul(double v1,double v2){


  BigDecimal b1=new BigDecimal(Double.toString(v1));


  BigDecimal b2=new BigDecimal(Double.toString(v2));


  return b1.multiply(b2).doubleva l_rue();


  }


  public static double div(double v1,double v2){


  BigDecimal b1=new BigDecimal(Double.toString(v1));


  BigDecimal b2=new BigDecimal(Double.toString(v2));


  return b1.divide(b2,10,BigDecimal.ROUND_HALF_UP).doubleva l_rue();


  }


  public static double div(double v1,double v2,int scale){


  if(scale<0){


  throw new IllegalArgumentException(


  "The scale must be a positive integer or zero");


  }