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();

}

}

java numberutil_NumberUtil相关推荐

  1. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  2. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  6. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  7. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  8. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  9. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

最新文章

  1. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件...
  2. Java异常的性能分析
  3. oracle 触发器 merge,如何从触发器中解决Oracle变异错误
  4. 1.9 程序示例--局部加权线性回归-机器学习笔记-斯坦福吴恩达教授
  5. 执子之手简约唯美的表白网站HTML源码
  6. linux scp命令参数及用法详解--linux远程复制拷贝命令使用实例【转】
  7. jQuery1.2选择器(1)
  8. VI3之vCenterServer配置的备份与还原
  9. html5在线表格生成器,js简单实现自动生成表格功能示例
  10. 界面开发控件DotNetBar for WPF教程:MobileRibbon快速入门指南
  11. 简历模板百度网盘自取
  12. 3709: [PA2014]Bohater
  13. 计算机视觉(二)图像分类
  14. Netlogo仿真初步学习总结
  15. PAT 1082 射击比赛 python
  16. 春天的致富梦ZZNU
  17. 学习秦始皇 五招打造无敌团队
  18. 韩国WA15-6819B高性能DSP数字功放芯片
  19. 很不错的abap开发入门教程
  20. 中国科学院计算机所张浩,专家人才库数据----中国科学院计算技术研究所

热门文章

  1. torch.load invalid load key, ‘\x00‘
  2. pybind 回调 多线程 异常
  3. 线性代数的本质 - 02 - 线性组合、张成的空间与基
  4. 基于keras的深度学习基本概念讲解
  5. 为CentOS 7安装VMware-tools
  6. 蓝牙杂散超标_杂散发射
  7. android置组件下面,Android Jetpack架构组件(十二)之Hilt
  8. isnull pivot server sql_多行转换成多列 pivot解决方案
  9. admui3字体无法删除_被微信好友删除、拉黑还不知?这3个方法可以自查,看完涨知识了...
  10. VC两个线程协作运行,轮流运行的