知识大全 Java简单类型进行精确浮点数运算

Posted

篇首语:遇到一些人,知道一些事,才能懂的理解与珍惜,才能看清自己的方向。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java简单类型进行精确浮点数运算相关的知识,希望对你有一定的参考价值。

Java简单类型进行精确浮点数运算  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  由于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();      cha138/Article/program/Java/Javascript/201311/25460

相关参考