您的位置:首页 > 其它

NumberUtil

2016-06-20 00:00 106 查看
摘要: NumberUtil

public static void main(String[] args) {
//格式化数字三位为一位
final DecimalFormat df=(DecimalFormat) DecimalFormat.getInstance();
df.setGroupingSize(3);
System.out.println(df.format(1234));//1,234

//格式化百分比,保留3位小数
final NumberFormat nt = NumberFormat.getPercentInstance();
nt.setMinimumFractionDigits(3);//保留3位小数
System.out.println(nt.format(1D/3D));//33.333%
System.out.println(nt.format(1D/4D));//25.000%
}

public class Common {
// 后台访问
public static final String BACKGROUND_PATH = "/WEB-INF/view";
// 默认除法运算精度
private static final int DEF_DIV_SCALE = 10;

/**
* 获取登录用户的userId
* @return
*/
public static Long getloginUserId()
{
Subject subject = SecurityUtils.getSubject();
UserEntity sessionUser = (UserEntity)subject.getSession().getAttribute("userSession");
return sessionUser.getId();
}

/**
* 获取登录用户的userId
* @return
*/
public static String getloginUserAccountName()
{
Subject subject = SecurityUtils.getSubject();
UserEntity sessionUser = (UserEntity)subject.getSession().getAttribute("userSession");
return sessionUser.getAccountName();
}

/**
* String转换double
*
* @param string
* @return double
*/
public static double convertSourData(String dataStr) throws Exception {
if (dataStr != null && !"".equals(dataStr)) {
return Double.valueOf(dataStr);
}
throw new NumberFormatException("convert error!");
}

/**
* 使用率计算
*
* @return
*/
public static String fromUsage(long free, long total) {
Double d = new BigDecimal(free * 100 / total).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
return String.valueOf(d);
}

/**
* 保留两个小数
*
* @return
*/
public static String formatDouble(Double b) {
BigDecimal bg = new BigDecimal(b);
return bg.setScale(2, BigDecimal.ROUND_HALF_UP).toString();
}

/**
* 返回用户的IP地址
* @param request
* @return
*/
public static String toIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}

/**
* 提供精确的减法运算。
* @param v1	被减数
* @param v2	减数
* @return 两个参数的差
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}

/**
* 提供精确的加法运算。
* @param v1	被加数
* @param v2	加数
* @return 两个参数的和
*/
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}

/**
* 提供精确的乘法运算。
* @param v1	被乘数
* @param v2	乘数
* @return 两个参数的积
*/
public static double mul(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}

/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。
* @param v1	被除数
* @param v2	除数
* @return 两个参数的商
*/
public static double div(double v1, double v2) {
return div(v1, v2, DEF_DIV_SCALE);
}

/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
* @param v1	被除数
* @param v2	 除数
* @param scale	表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1, double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}

/**
* 是否为整数
* @param str
* @return
*/
public static boolean isNumeric(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: