123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package com.ruoyi.common.utils;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- public class Arith
- {
-
- private static final int DEF_DIV_SCALE = 10;
-
- private Arith()
- {
- }
-
- 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();
- }
-
- 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();
- }
-
- 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();
- }
-
- public static double div(double v1, double v2)
- {
- return div(v1, v2, DEF_DIV_SCALE);
- }
-
- 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));
- if (b1.compareTo(BigDecimal.ZERO) == 0)
- {
- return BigDecimal.ZERO.doubleValue();
- }
- return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue();
- }
-
- public static double round(double v, int scale)
- {
- if (scale < 0)
- {
- throw new IllegalArgumentException(
- "The scale must be a positive integer or zero");
- }
- BigDecimal b = new BigDecimal(Double.toString(v));
- BigDecimal one = BigDecimal.ONE;
- return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue();
- }
- }
|