All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.leopard.burrow.util.NumberUtil Maven / Gradle / Ivy

package io.leopard.burrow.util;

import java.text.DecimalFormat;
import java.util.Random;

public class NumberUtil {

	/**
	 * 判断两个数是否相等
	 * 
	 * @param num1
	 *            数1
	 * @param num2
	 *            数2
	 * @return boolean
	 */
	public static boolean equals(long num1, int num2) {
		return num1 == num2;
	}

	/**
	 * 判断Number对象是否为空
	 * 
	 * @param num
	 *            Number对象
	 * @return boolean
	 */
	public static boolean isNull(Number num) {
		return num == null;
	}

	/**
	 * 判断Number对象是否非空
	 * 
	 * @param num
	 *            Number对象
	 * @return boolean
	 */
	public static boolean isNotNull(Number num) {
		return num != null;
	}

	/**
	 * 返回整数值,为null返回默认整数值
	 * 
	 * @param num
	 *            整型对象
	 * @param defaultNum
	 *            默认整数值
	 * @return 整数值
	 */
	public static int defaultInt(Integer num, int defaultNum) {
		if (num == null) {
			return defaultNum;
		}
		return num;
	}

	/**
	 * 获取百分比.
	 * 
	 * @param current
	 *            分子
	 * @param total
	 *            分母
	 * @return 百分比
	 */
	public static int percent(double current, double total) {
		double avg = current / total;
		int percent = (int) (avg * 100);
		return percent;
	}

	/**
	 * 每秒平均值.
	 * 
	 * @param count
	 *            总数
	 * @param time
	 *            秒数
	 * @return 平均值
	 */
	public static long perSecondAvg(long count, long time) {
		if (time <= 0) {
			return 0;
		}
		return count * 1000 / time;
	}

	// public static double avg(double current, double total) {
	// double avg = (double) current / (double) total;
	// int avg1 = (int) (avg * 100);
	// double avg2 = (double) avg1 / 100;
	// return avg2;
	// }

	/**
	 * 把null转换为0.
	 * 
	 * @param num
	 *            整型对象
	 * @return 整数
	 */
	public static int toInt(Number num) {
		if (num == null) {
			return 0;
		}
		else {
			return num.intValue();
		}
	}

	// /**
	// * 返回整数值,null返回0
	// *
	// * @param num
	// * 长整型对象
	// * @return 整数值
	// */
	// public static int toInt(Long num) {
	// if (num == null) {
	// return 0;
	// } else {
	// return num.intValue();
	// }
	// }

	// /**
	// * 返回整数值,null转成0
	// *
	// * @param num
	// * Double对象
	// * @return 整数值
	// */
	// public static int toInt(Double num) {
	// if (num == null) {
	// return 0;
	// } else {
	// return num.intValue();
	// }
	// }

	/**
	 * 把null和非正数转成false
	 * 
	 * @param num
	 *            长整型
	 * @return boolean
	 */
	public static boolean toBool(Long num) {
		if (num == null || num <= 0) {
			return false;
		}
		else {
			return true;
		}
	}

	/**
	 * 返回整数值,为null返回默认整数
	 * 
	 * @param num
	 *            长整型对象
	 * @param defaultValue
	 *            默认整数
	 * @return 整数值
	 */
	// public static int toInt(Long num, int defaultValue) {
	// if (num == null) {
	// return defaultValue;
	// } else {
	// return num.intValue();
	// }
	// }

	/**
	 * 返回整数值,为null返回默认整数值
	 * 
	 * @param num
	 *            整型对象
	 * @param defaultValue
	 *            默认整数值
	 * @return 整数值
	 */
	public static int toInt(Number num, int defaultValue) {
		if (num == null) {
			return defaultValue;
		}
		else {
			return num.intValue();
		}
	}

	/**
	 * 返回float值,为null返回默认值
	 * 
	 * @param num
	 *            Float对象
	 * @param defaultValue
	 *            默认值
	 * @return float值
	 */
	public static float toFloat(Float num, float defaultValue) {
		if (num == null) {
			return defaultValue;
		}
		else {
			return num.floatValue();
		}
	}

	/**
	 * boolean值转成整数,true为1,false为0
	 * 
	 * @param flag
	 * @return
	 */
	public static int toInt(boolean flag) {
		return flag ? 1 : 0;
	}

	/**
	 * 字符串转成整型,null或者长度为0的字符串返回null
	 * 
	 * @param str
	 *            字符串
	 * @return 整型
	 */
	public static Integer toInteger(String str) {
		if (str == null || str.length() == 0) {
			return null;
		}
		else {
			return Integer.parseInt(str);
		}
	}

	/**
	 * 字符串转成长整型,null或者长度为0的字符串返回null
	 * 
	 * @param str
	 *            字符串
	 * @return 整型
	 */
	public static Long toLong(String str) {
		if (str == null || str.length() == 0) {
			return null;
		}
		else {
			return Long.parseLong(str);
		}
	}

	/**
	 * 返回布尔值,把null转成false
	 * 
	 * @param obj
	 *            布尔对象
	 * @return boolean
	 */
	public static boolean toBool(Boolean obj) {
		if (obj == null) {
			return false;
		}
		else {
			return obj;
		}
	}

	// public static boolean incrOrDecrStatus(Long result) {
	// if (result == null || result == 0) {
	// return false;
	// }
	// else {
	// return true;
	// }
	// }

	/**
	 * 返回整数值,null转成0
	 * 
	 * @param num
	 *            Object对象
	 * @return 整数值
	 */
	// @Deprecated
	public static int toInt(Object num) {
		if (num == null) {
			return 0;
		}
		else {
			return Integer.parseInt(num.toString());
		}
	}

	// public static long toLong(boolean success) {
	// if (success) {
	// return 1;
	// }
	// else {
	// return 0;
	// }
	// }

	/**
	 * 返回长整型值,null返回0
	 * 
	 * @param num
	 *            长整型对象
	 * @return 长整型值
	 */
	public static long toLong(Long num) {
		if (num == null) {
			return 0;
		}
		else {
			return num.longValue();
		}
	}

	/**
	 * 返回长整型值,null转为0
	 * 
	 * @param num
	 *            Double对象
	 * @return 长整型值
	 */
	public static long toLong(Double num) {
		if (num == null) {
			return 0;
		}
		else {
			return num.longValue();
		}
	}

	/**
	 * 返回长整型值,null返回默认值
	 * 
	 * @param num
	 *            Double对象
	 * @param def
	 *            默认值
	 * @return 长整型值
	 */
	public static long toLong(Double num, int def) {
		if (num == null) {
			return def;
		}
		else {
			return num.longValue();
		}
	}

	/**
	 * 计算默认起始记录
	 * 
	 * @param pageid
	 *            分页编号
	 * @param size
	 *            分页大小
	 * @return 当前分页的起始记录编号
	 */
	public static int getPageStart(int pageId, int size) {
		if (pageId < 1) {
			throw new IllegalArgumentException("pageid不能小于1.");
		}
		if (size < 1) {
			throw new IllegalArgumentException("size不能小于1.");
		}
		return (pageId - 1) * size;
	}

	/**
	 * 把null或0转成null
	 * 
	 * @param num
	 *            整型对象
	 * @return 整型对象
	 */
	public static Integer zeroToNull(Integer num) {
		if (num == null) {
			return null;
		}
		if (num == 0) {
			return null;
		}
		return num;
	}

	/**
	 * 超过max就置0.
	 * 
	 * @param num
	 * @param max
	 * @return
	 */
	public static int toZero(int num, int max) {
		if (num > max) {
			return 0;
		}
		return num;
	}

	// /**
	// * 并发数计算.
	// *
	// * @param num1
	// * @param num2
	// * @return
	// */
	// public static int concurrent(int num1, int num2) {
	// double min = num1 > num2 ? num2 : num1;
	// double max = num1 > num2 ? num1 : num2;
	//
	// double ratio = min / max;
	// int count = (int) ((min) / (1 + ratio));
	// // System.out.println("num2:" + num2 + " ratio:" + ratio + " count:" +
	// // count);
	// System.out.println("num:" + num1 + "+" + num2 + "\tavg:" + count);
	// return 0;
	// }

	/**
	 * 状态字段解析.
	 * 
	 * @param status
	 * @param on
	 * @return
	 */
	public static int parseStatus(int status, int num, boolean on) {
		// int typeValue = 0;
		// if (isOn) {
		// status = "status=(status | ?),";
		// typeValue = type.toIntValue();
		// }
		// else {
		// status = "status=(status & ?),";
		// typeValue = ~type.toIntValue();
		// }
		int result;
		if (on) {
			result = status | num;
		}
		else {
			result = status & ~num;
		}
		System.err.println("result:" + result);
		return result;
	}

	/**
	 * 判断是否大于0
	 * 
	 * @param num
	 *            Double对象
	 * @return boolean
	 */
	public static boolean isGreaterZero(Double num) {
		if (num == null) {
			return false;
		}
		return num > 0;
	}

	/**
	 * 判断是否大于0
	 * 
	 * @param num
	 *            Long对象
	 * @return boolean
	 */
	public static boolean isGreaterZero(Long num) {
		if (num == null) {
			return false;
		}
		return num > 0;
	}

	/**
	 * 格式化十进制数,分隔千位
	 * 
	 * @param num
	 *            十进制数
	 * @return 格式化后的数值
	 */
	public static String format(double num) {
		return new DecimalFormat(",###").format(num);
	}

	public static String format(double num, int n) {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < n; i++) {
			sb.append('0');
		}
		return new DecimalFormat("0." + sb.toString()).format(num);
	}

	/**
	 * 保留小数点N位.
	 * 
	 * @param num
	 * @param n
	 *            N位小数点
	 * @return
	 */
	public static double scale(double num, int n) {
		double scale = Math.pow(10, n);
		return (int) (num * scale) / scale;
	}

	/**
	 * 保留小数点N位.
	 * 
	 * @param num
	 * @param n
	 *            N位小数点
	 * @return
	 */
	public static float scale(float num, int n) {
		float scale = (float) Math.pow(10, n);
		// System.out.println("scale:" + scale);
		return ((int) (num * scale)) / scale;
	}

	public static int random(int max) {
		Random random = new Random();
		int rand = random.nextInt(max);
		return rand;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy