Java中Double数据的计算
BigDecimal.setScale()// 该方法用于格式化小数点 setScale(1)// 表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)//直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_UP)//进位处理,2.35变成2.4 setScale(1,BigDecimal.ROUND_HALF_UP)//四舍五入,2.35变成2.4 setScaler(1,BigDecimal.ROUND_HALF_DOWN)//四舍五入,2.35变成2.3,如果是5则向下舍 /** * 对double数据进行取精度. * * @param value double数据. * @param scale 精度位数(保留的小数位数). * @param roundingMode 精度取值方式. roundingMode 枚举 * @return 精度计算后的数据. */ public static double round(double value, int scale, int roundingMode) { BigDecimal bd = new BigDecimal(String.valueOf(value)); bd = bd.setScale(scale, roundingMode); double d = bd.doubleValue(); bd = null; return d; } /** * double 相加 * * @param d1 * @param d2 * @return */ public static double sum(double d1, double d2) { BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.add(bd2).doubleValue(); } /** * double 相减 * * @param d1 * @param d2 * @return */ public static double sub(double d1, double d2) { BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.subtract(bd2).doubleValue(); } /** * double 乘法 * * @param d1 * @param d2 * @return */ public static double mul(double d1, double d2) { BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.multiply(bd2).doubleValue(); } /** * 乘法 * * @param data * @return */ public static Double mul(Double[] data) { BigDecimal total = new BigDecimal(1d); for (int i = 0; i < data.length; i++) { BigDecimal bd = new BigDecimal(data[i]); total = total.multiply(bd); } return total.doubleValue(); } /** * double 除法 * * @param d1 * @param d2 * @param scale 四舍五入 小数点位数 * @return */ public static double div(double d1, double d2, int scale) { // 当然在此之前,你要判断分母是否为0, // 为0你可以根据实际需求做相应的处理 if (d2 == 0) { return 0; } BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); }
发布者:songJian 点击数:2081 发布时间:2020-02-10 22:40:32 更新时间:2020-02-10 22:40:32
正在加载评论...