您现在的位置是:首页 >

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

火烧 2023-03-18 03:33:25 1063
Java简单类型进行精确浮点数运算   由于Java的简单类型不能够精确的对浮点数进行运算 这个工具类提供精确的浮点数运算 包括加减乘除和四舍五入     以下为代码      im ort java

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

浮点数如何进行计算 Java简单类型进行精确浮点数运算
  由于Java的简单类型不能够精确的对浮点数进行运算 这个工具类提供精确的浮点数运算 包括加减乘除和四舍五入     以下为代码      import java math BigDecimal;    public class Arith {   //默认除法运算精度   private static final int DEF_DIV_SCALE = ;     //这个类不能实例化   private Arith(){   }     /**    * 提供精确的加法运算     * @param v 被加数    * @param v 加数    * @return 两个参数的和    */   public static double add(double v double v ){    BigDecimal b = new BigDecimal(Double toString(v ));    BigDecimal b = new BigDecimal(Double toString(v ));    return b add(b ) doubleValue();   }     /**    * 提供精确的减法运算     * @param v 被减数    * @param v 减数    * @return 两个参数的差    */   public static double sub(double v double v ){    BigDecimal b = new BigDecimal(Double toString(v ));    BigDecimal b = new BigDecimal(Double toString(v ));    return b subtract(b ) doubleValue();   }     /**    * 提供精确的乘法运算     * @param v 被乘数    * @param v 乘数    * @return 两个参数的积    */     public static double mul(double v double v ){    BigDecimal b = new BigDecimal(Double toString(v ));    BigDecimal b = new BigDecimal(Double toString(v ));    return b multiply(b ) doubleValue();   }     /**    * 提供(相对)精确的除法运算 当发生除不尽的情况时 精确到    * 小数点以后 位 以后的数字四舍五入     * @param v 被除数    * @param v 除数    * @return 两个参数的商    */   public static double div(double v double v ){    return div(v v DEF_DIV_SCALE);   }     /**    * 提供(相对)精确的除法运算 当发生除不尽的情况时 由scale参数指    * 定精度 以后的数字四舍五入     * @param v 被除数    * @param v 除数    * @param scale 表示表示需要精确到小数点以后几位     * @return 两个参数的商    */   public static double div(double v double v int scale){    if(scale< ){     throw new IllegalArgumentException(      The scale must be a positive integer or zero );    }    BigDecimal b = new BigDecimal(Double toString(v ));    BigDecimal b = new BigDecimal(Double toString(v ));    return b divide(b scale BigDecimal ROUND_HALF_UP) doubleValue();   }     /**    * 提供精确的小数位四舍五入处理     * @param v 需要四舍五入的数字    * @param scale 小数点后保留几位    * @return 四舍五入后的结果    */   public static double round(double v int scale){    if(scale< ){     throw new IllegalArgumentException(      The scale must be a positive integer or zero );    }    BigDecimal b = new BigDecimal(Double toString(v));    BigDecimal one = new BigDecimal( );    return b divide(one scale BigDecimal ROUND_HALF_UP) doubleValue();   }  } lishixinzhi/Article/program/Java/Javascript/201311/25460  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码