From 283d3fbe22a19f1e3f28e1a2ae4717ade45b3d16 Mon Sep 17 00:00:00 2001 From: xiangwbs Date: Tue, 21 Nov 2017 21:05:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0doubleutil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xwbing/util/DoubleUtil.java | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 boot-service/src/main/java/com/xwbing/util/DoubleUtil.java diff --git a/boot-service/src/main/java/com/xwbing/util/DoubleUtil.java b/boot-service/src/main/java/com/xwbing/util/DoubleUtil.java new file mode 100644 index 0000000..d2134be --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/util/DoubleUtil.java @@ -0,0 +1,125 @@ +package com.xwbing.util; + +import java.math.BigDecimal; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2017/11/21 10:36 + * 作者: xiangwb + * 说明: 数字工具类 + */ +public class DoubleUtil { + private static final int DEF_DIV_SCALE = 10; + + /** + * 两个Double数相加 + * + * @param v1 + * @param v2 + * @return Double + */ + public static Double add(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.add(b2).doubleValue(); + } + + /** + * 两个Double数相减 + * + * @param v1 + * @param v2 + * @return Double + */ + public static Double sub(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.subtract(b2).doubleValue(); + } + + /** + * 两个Double数相乘 + * + * @param v1 + * @param v2 + * @return Double + */ + public static Double mul(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.multiply(b2).doubleValue(); + } + + /** + * 两个Double数相除 + * + * @param v1 + * @param v2 + * @return Double + */ + public static Double div(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue(); + } + + /** + * 两个Double数相除,并保留scale位小数 + * + * @param v1 + * @param v2 + * @param scale + * @return Double + */ + public static Double div(Double v1, Double v2, int scale) { + if (scale < 0) + throw new IllegalArgumentException("小数位数不能为负数"); + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + } + + /** + * 格式化double 四舍五入 + * + * @param v1 + * @param scale 小数位 + * @return + */ + public static Double formate(Double v1, int scale) { + BigDecimal bg = new BigDecimal(v1); + return bg.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + } + + /** + * 不四舍五入保留n位小数 + * + * @param scale 小数位 + * @param d + * @return + */ + public static double decimalND(Double d,int scale) { // 不四舍五入 + BigDecimal bg = new BigDecimal(d); + return bg.setScale(scale, BigDecimal.ROUND_DOWN).doubleValue(); + } + + /** + * 保留n位小数 对非零舍弃部分前面的数字加1 + * + * @param scale 小数位 + * @param d + * @return + */ + public static double decimalNU(Double d, int scale) { + BigDecimal bg = new BigDecimal(d); + return bg.setScale(scale, BigDecimal.ROUND_UP).doubleValue(); + } + + public static void main(String[] args) { + Double div = div((double) 9, (double) 8, 2); + System.out.println(div); + div=formate(div,1); + System.out.println(div); + } +} +