zoukankan      html  css  js  c++  java
  • 数字格式化工具类 持续更新>>>

    /**
     * 数字格式化工具类
     */
    public class NumberUtils {
        /**
    	 * 格式化为指定位小数的数字,返回未使用科学计数法表示的具有指定位数的字符串。
    	 * 该方法舍入模式:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。
    	 * <pre>
    	 * 	"3.1415926", 1			--> 3.1
    	 * 	"3.1415926", 3			--> 3.142
    	 * 	"3.1415926", 4			--> 3.1416
    	 * 	"3.1415926", 6			--> 3.141593
    	 * 	"1234567891234567.1415926", 3	--> 1234567891234567.142
    	 * </pre>
    	 * @param //String类型的数字对象
    	 * @param precision  小数精确度总位数,如2表示两位小数
    	 * @return 返回数字格式化后的字符串表示形式(注意返回的字符串未使用科学计数法)
    	 */
    	public static String keepPrecision(String number, int precision) {
    		BigDecimal bg = new BigDecimal(number);
    		return bg.setScale(precision, BigDecimal.ROUND_HALF_UP).toPlainString();
    	}
     
    	/**
    	 * 格式化为指定位小数的数字,返回未使用科学计数法表示的具有指定位数的字符串。<br>
    	 * 该方法舍入模式:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。<br>
    	 * 如果给定的数字没有小数,则转换之后将以0填充;例如:int 123  1 --> 123.0<br>
    	 * <b>注意:</b>如果精度要求比较精确请使用 keepPrecision(String number, int precision)方法
    	 * @param //String类型的数字对象
    	 * @param precision  小数精确度总位数,如2表示两位小数
    	 * @return 返回数字格式化后的字符串表示形式(注意返回的字符串未使用科学计数法)
    	 */
    	public static String keepPrecision(Number number, int precision) {
    		return keepPrecision(String.valueOf(number), precision);
    	}
     
    	/**
    	 * 对double类型的数值保留指定位数的小数。<br>
    	 * 该方法舍入模式:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。<br>
    	 * <b>注意:</b>如果精度要求比较精确请使用 keepPrecision(String number, int precision)方法
    	 * @param number  要保留小数的数字
    	 * @param precision 小数位数
    	 * @return double 如果数值较大,则使用科学计数法表示
    	 */
    	public static double keepPrecision(double number, int precision) {
    		BigDecimal bg = new BigDecimal(number);
    		return bg.setScale(precision, BigDecimal.ROUND_HALF_UP).doubleValue();
    	}
     
    	/**
    	 * 对float类型的数值保留指定位数的小数。<br>
    	 * 该方法舍入模式:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。<br>
    	 * <b>注意:</b>如果精度要求比较精确请使用 keepPrecision(String number, int precision)方法
    	 * @param number  要保留小数的数字
    	 * @param precision 小数位数
    	 * @return float 如果数值较大,则使用科学计数法表示
    	 */
    	public static float keepPrecision(float number, int precision) {
    		BigDecimal bg = new BigDecimal(number);
    		return bg.setScale(precision, BigDecimal.ROUND_HALF_UP).floatValue();
    	}
    	
    	/**
    	 * 获取 ±number 的随机数。<br>
    	 * @param number  要保留小数的数字
    	 * @return float 如果数值较大,则使用科学计数法表示
    	 */
    	private static float getRandomNum(int number) {
    		Random random = new Random();
    		//return num /2 + random.nextFloat() * num * -1;
    		int randomNum = (random.nextInt(number)) * (random.nextInt(2) == 0 ? -1 : 1);
    		String rd = randomNum + "." + random.nextInt(10);
    		return Float.parseFloat(rd);
    	}
    	
    	/**
    	 * 去掉小数点后多余的0。<br>
    	 * 例如: 1.0 则返回 1。<br>
    	 * @param number  要处理的数字
    	 * @return double 
    	 */
    	public static double rvZeroAndDot(double number){
    		String s = String.valueOf(number);
    		if (s.isEmpty()) {
    			return 0;
    		}
    		if(s.indexOf(".") > 0){
    			s = s.replaceAll("0+?$", "");//去掉多余的0
    			s = s.replaceAll("[.]$", "");//如最后一位是.则去掉
    		}
    		return Double.parseDouble(s);
    	}
     
    }
    
    有梦为马,游历天涯!
  • 相关阅读:
    HAProxy、Keepalived 在 Ocatvia 的应用实现与分析
    Octavia 的 HTTPS 与自建、签发 CA 证书
    Octavia 创建 loadbalancer 的实现与分析
    OpenStack Rally 质量评估与自动化测试利器
    自建 CA 中心并签发 CA 证书
    Failed building wheel for netifaces
    通过 vSphere WS API 获取 vCenter Datastore Provisioned Space 置备空间
    OpenStack Placement Project
    我们建了一个 Golang 硬核技术交流群(内含视频福利)
    没有图形界面的软件有什么用?
  • 原文地址:https://www.cnblogs.com/qijianguo/p/10180872.html
Copyright © 2011-2022 走看看