WEB开发网
开发学院WEB开发Jsp Java简单类型进行精确浮点数运算 阅读

Java简单类型进行精确浮点数运算

 2008-01-05 20:10:48 来源:WEB开发网   
核心提示: 由于java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精确的浮点数运算,Java简单类型进行精确浮点数运算,包括加减乘除和四舍五入, 以下为代码:import java.math.BigDecimal;public class Arith { //默认除法运算精度 PRivate static f
  由于java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精确的浮点数运算,包括加减乘除和四舍五入。

  以下为代码:





import java.math.BigDecimal;

public class Arith {
  //默认除法运算精度
  PRivate static final int DEF_DIV_SCALE = 10;

  //这个类不能实例化
  private Arith(){
  }

  /**
  * 提供精确的加法运算。
  * @param v1 被加数
  * @param v2 加数
  * @return 两个参数的和
  */
  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).doubleValue();
  }

  /**
  * 提供精确的减法运算。
  * @param v1 被减数
  * @param v2 减数
  * @return 两个参数的差
  */
  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).doubleValue();
  }

  /**
  * 提供精确的乘法运算。
  * @param v1 被乘数
  * @param v2 乘数
  * @return 两个参数的积
  */







  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).doubleValue();
  }

  /**
  * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
  * 小数点以后10位,以后的数字四舍五入。
  * @param v1 被除数
  * @param v2 除数
  * @return 两个参数的商
  */
  public static double div(double v1,double v2){
   return div(v1,v2,DEF_DIV_SCALE);
  }

  /**
  * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
  * 定精度,以后的数字四舍五入。
  * @param v1 被除数
  * @param v2 除数
  * @param scale 表示表示需要精确到小数点以后几位。
  * @return 两个参数的商
  */
  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");
   }
   BigDecimal b1 = new BigDecimal(Double.toString(v1));
   BigDecimal b2 = new BigDecimal(Double.toString(v2));

Tags:Java 简单 类型

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接