|
@@ -18,6 +18,17 @@ public final class NumberUtils {
|
|
|
*/
|
|
|
public static final int DEFAULT_DECIMAL_SCALE = 8;
|
|
|
|
|
|
+ /**
|
|
|
+ * 数字缩/放字符数组
|
|
|
+ */
|
|
|
+ private static final char[] REDUCE_ENLARGE_CHARS = {
|
|
|
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
|
|
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
|
|
|
+ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
|
|
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
|
|
|
+ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
|
|
|
+ };
|
|
|
+
|
|
|
/**
|
|
|
* 默认小数四舍五入模式
|
|
|
*/
|
|
@@ -350,4 +361,51 @@ public final class NumberUtils {
|
|
|
}
|
|
|
return decimal.toPlainString();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将数字缩小为字符串
|
|
|
+ *
|
|
|
+ * @param number 数字
|
|
|
+ * @return 字符串
|
|
|
+ */
|
|
|
+ public static String reduce(long number) {
|
|
|
+ if (number < 0) {
|
|
|
+ number = ((long) 2 * 0x7fffffff) + number + 2;
|
|
|
+ }
|
|
|
+ int size = 32, pos = size;
|
|
|
+ int seed = REDUCE_ENLARGE_CHARS.length;
|
|
|
+ char[] buffer = new char[size];
|
|
|
+ while ((number / seed) > 0) {
|
|
|
+ buffer[--pos] = REDUCE_ENLARGE_CHARS[(int) (number % seed)];
|
|
|
+ number /= seed;
|
|
|
+ }
|
|
|
+ buffer[--pos] = REDUCE_ENLARGE_CHARS[(int) (number % seed)];
|
|
|
+ return new String(buffer, pos, (size - pos));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将字符串放大为数字
|
|
|
+ *
|
|
|
+ * @param reduce 数字缩小字符串
|
|
|
+ * @return 数字
|
|
|
+ */
|
|
|
+ public static long enlarge(String reduce) {
|
|
|
+ if (StringUtils.isEmpty(reduce)) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ long number = 0, base = 1;
|
|
|
+ char[] chars = reduce.toCharArray();
|
|
|
+ for (int i = chars.length - 1; i >= 0; i--) {
|
|
|
+ int index = 0;
|
|
|
+ for (int j = 0, length = REDUCE_ENLARGE_CHARS.length; j < length; j++) {
|
|
|
+ if (REDUCE_ENLARGE_CHARS[j] == chars[i]) {
|
|
|
+ index = j;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ number += index * base;
|
|
|
+ base *= REDUCE_ENLARGE_CHARS.length;
|
|
|
+ }
|
|
|
+ return number;
|
|
|
+ }
|
|
|
}
|