这篇文章主要为大家详细介绍了java常用工具类中的数字工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了java常用工具类,数字工具类的具体代码,供大家参考,具体内容如下
package com.jarvis.base.util; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Random; public class NumericHelper { /** * 描述:通过一个整数i获取你所要的哪几个(从0开始) i为 多个2的n次方之和,如i=7,那么根据原值是2的n次方之各,你的原值必定是1,2,4 。 * * @param i * 数值 * @return */ public static int[] getWhich(long i) { int exp = Math.getExponent(i); if (i == (1 i && (1 0) { pattern += "." + createStr("0", digits, ""); } return format(num, pattern); } /** * 描述:生成字符串 * * @param arg0 * 字符串元素 * @param arg1 * 生成个数 * @param arg2 * 间隔符号 * @return */ private static String createStr(String arg0, int arg1, String arg2) { if (arg0 == null) { return ""; } else { StringBuffer sb = new StringBuffer(); for (int i = 0; i 0) { sb.delete(sb.lastIndexOf(arg2), sb.length()); } return sb.toString(); } } /** * 描述:数字格式化 * * @param num * 数字 * @param pattern * 格式 * @return */ public static String format(double num, String pattern) { NumberFormat fmt = null; if (pattern != null && pattern.length() > 0) { fmt = new DecimalFormat(pattern); } else { fmt = new DecimalFormat(); } return fmt.format(num); } /** * 求浮点数的权重 * * @param number * @return */ public static double weight(double number) { if (number == 0) { return 1; } double e = Math.log10(Math.abs(number)); int n = Double.valueOf(Math.floor(e)).intValue(); double weight = 1; if (n > 0) { for (int i = 0; i n; i--) { weight /= 10; } } return weight; } /** * 获得权重的单位 * * @param scale * @return */ public static String unit(double scale) { if (scale == 1 || scale == 0) { return "";// 不设置单位倍率单位,使用基准单位 } String[] units = new String[] { "十", "百", "千", "万", "十万", "百万", "千万", "亿", "十亿", "百亿", "千亿", "兆" }; String[] units2 = new String[] { "十分", "百分", "千分", "万分", "十万分", "百万分", "千万分" }; double e = Math.log10(scale); int position = Double.valueOf(Math.ceil(e)).intValue(); if (position >= 1 && position = 1) { return 1; } // 无需缩放 else if (absValue 0.0001) { return 1; } else { return weight(num) / 10; } } /** * 获得缩放后并且格式化的浮点数 * * @param num * @param scale * @return */ public static double scaleNumber(double num, double scale) { DecimalFormat df = null; if (scale == 1) { df = new DecimalFormat("#.0000"); } else { df = new DecimalFormat("#.00"); } double scalednum = num / scale; return Double.valueOf(df.format(scalednum)); } /** * 产生n位随机数 Todo:性能不要,有待优化 */ public static String ramdomNumber(int n) { if (n