From 13b31b2ca2a5f8600002a042b536c9d5529842e3 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 09 三月 2026 19:21:18 +0800
Subject: [PATCH] #
---
src/main/java/com/core/common/Arith.java | 77 ++++++++++++++++++++++++++++++++++++++
1 files changed, 77 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/core/common/Arith.java b/src/main/java/com/core/common/Arith.java
new file mode 100644
index 0000000..a5d56d0
--- /dev/null
+++ b/src/main/java/com/core/common/Arith.java
@@ -0,0 +1,77 @@
+package com.core.common;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+public class Arith {
+
+ private enum ArithType {
+ ADD(0),
+ DIVIDE(1),
+ SUBTRACT(2),
+ MULTIPLY(3);
+
+ private final int value;
+
+ ArithType(int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return value;
+ }
+ }
+
+ public static double add(int scale, Number... nums) {
+ return getAirth(scale, ArithType.ADD.getValue(), nums);
+ }
+
+ public static double subtract(int scale, Number... nums) {
+ return getAirth(scale, ArithType.SUBTRACT.getValue(), nums);
+ }
+
+ public static double multiplys(int scale, Number... nums) {
+ return getAirth(scale, ArithType.MULTIPLY.getValue(), nums);
+ }
+
+ public static double divides(int scale, Number... nums) {
+ return getAirth(scale, ArithType.DIVIDE.getValue(), nums);
+ }
+
+ public static int percentage(Number... nums) {
+ return (int) (divides(2, nums) * 100);
+ }
+
+ public static double remainder(Number... nums) {
+ return new BigDecimal(nums[0].toString())
+ .remainder(new BigDecimal(String.valueOf(nums[1])))
+ .doubleValue();
+ }
+
+ private static double getAirth(int scale, int type, Number... nums) {
+ if (nums == null || nums.length == 0) {
+ return 0D;
+ }
+ BigDecimal result = new BigDecimal(nums[0].toString());
+ for (int i = 1; i < nums.length; i++) {
+ BigDecimal current = new BigDecimal(String.valueOf(nums[i]));
+ switch (type) {
+ case 0:
+ result = result.add(current);
+ break;
+ case 1:
+ result = result.divide(current, scale, RoundingMode.HALF_UP);
+ break;
+ case 2:
+ result = result.subtract(current);
+ break;
+ case 3:
+ result = result.multiply(current);
+ break;
+ default:
+ return 0D;
+ }
+ }
+ return result.setScale(scale, RoundingMode.HALF_UP).doubleValue();
+ }
+}
--
Gitblit v1.9.1