NumberUtils
package cn.edu.hbcf.common.utils; import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.regex.Pattern; public class NumberUtils { /**
* 处理Double类型数据,如果为空返回0,否则返回其值
*
* @param d
* @return
*/
public static double getDoubleNumber(Double d) { if (d != null) {
return d.doubleValue();
} else {
return 0;
} }
/**
* 判断 String 类型的数据是否能Double转换
* @param s
* @return
*/
public static boolean isNumString(String s){
Pattern pattern = Pattern.compile("^[-+]?\\d+(\\.\\d+)?");
//Pattern pattern = Pattern.compile("(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))"); return pattern.matcher(s).matches();
} /**
* 获取百分数,保留2为小数
*
* @param d
* @return
*/
public static String getPercentNumber(Double d) {
if(d==null){
d=0.0;
}
// 获取格式化对象
NumberFormat nt = NumberFormat.getPercentInstance();
// 设置百分数精确度2即保留两位小数
nt.setMinimumFractionDigits(2);
return nt.format(d);
}
/**
*
* @param d
* @param a
* @return
*/
public static double getDoubleFormat(Double d,int a){
if(d==null){
d=0.0;
}
BigDecimal bg = new BigDecimal(d);
return bg.setScale(a, BigDecimal.ROUND_HALF_UP).doubleValue();
} /**
* 保留小数
*
* @param value
* 位数
* @return
*/
public static double toFixed(double value) {
long lg = Math.round(value * 100); // 四舍五入
double d = lg / 100.0; // 注意:使用 100.0而不是 100
return d;
} public static double getFromPrecentNumber(String s) {
if (s != null && !"".equals(s)) {
double d = new Double(s.substring(0, s.indexOf('%'))) / 100.0;
return d;
} else
return 0;
}
/**
* 数值类型转化Double to Int
* @param d
* @return
*/
public static int toInt(Double d){
if(d == null){
return 0;
}else{
return (int)Math.round(d.doubleValue());
}
} public static String convertDouble(Double d){
if(d == null){
return "0";
}else{
NumberFormat nf = NumberFormat.getInstance();
nf.setGroupingUsed(false); return nf.format(d);
}
} /**
* 数字金额大写转换,思想先写个完整的然后将如零拾替换成零
* 要用到正则表达式
*/
public static String digitUppercase(double n){
String fraction[] = {"角", "分"};
String digit[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String unit[][] = {{"元", "万", "亿"},
{"", "拾", "佰", "仟"}}; String head = n < 0? "负": "";
n = Math.abs(n); String s = "";
for (int i = 0; i < fraction.length; i++) {
s += (digit[(int)(Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", "");
}
if(s.length()<1){
s = "整";
}
int integerPart = (int)Math.floor(n); for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
String p ="";
for (int j = 0; j < unit[1].length && n > 0; j++) {
p = digit[integerPart%10]+unit[1][j] + p;
integerPart = integerPart/10;
}
s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s;
}
return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
} }
NumberUtils的更多相关文章
- NumberUtils.java
package com.vcredit.ddcash.batch.util; import java.math.BigDecimal; public class NumberUtils { /** * ...
- NumberUtils、ArrayUtils和RandomUtils工具类用法
一.NumberUtils工具类 /*1.NumberUtils.isNumber():判断字符串是否是数字*/ NumberUtils.isNumber("5.96");//结果 ...
- Java 数字数组随机数工具类 NumberUtils、ArrayUtils、RandomUtils用法
commons-lang3-3-3.8.1 //----------------------------------------------------------------------- /** ...
- Java工具类NumberUtils使用
int数据类型和long数据类型 int占32位,long占64位,long表示的数据更大:public static int toInt(String str) NumberUtils.toInt( ...
- 项目编码规范(Ali)
一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...
- JSON金额解析BUG的解决过程
[原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 这是在我们开发的一个支付系统中暴露的一个BUG,问题本身比较简单,有意思的是解决问题的过程.将过程分享出来,希望能够对大家有所帮助. 一 ...
- JS 工具类
之前工作用的JavaScript比较多,总结了一下工具类,和大家分享一下,有不足之处还请多多见谅!! 1. 数组工具类(arrayUtils) var arrayUtils = {}; (functi ...
- 全文检索解决方案(lucene工具类以及sphinx相关资料)
介绍两种全文检索的技术. 1. lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...
- 队列送券的实际应用--ConcurrentLinkedQueue并发队列
1.TicketQueue.java--队列封装类,负责如下职责:a.把活动登记对象放入队列中b.从队列中获取活动登记对象,并派券 package com.datong.pear.ticket; im ...
随机推荐
- 关于onclick的执行原理
js 或者 jQuery 为文档某一节点添加onclick事件的时候,添加的onclick事件会添加在原节点的onclick事件之后,不会覆盖之前的onclick事件 如果不想让原onclick事件 ...
- WPF使用ARCGIS App文件配置Cs后台文件
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...
- 并发编程系列小结(线程安全,synchronized,脏读,线程间的通信wait/notify,线程的三种实现方式Demo,可替代wait/notify的方法)
线程安全: 当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法就是线程安全的) synchronized: 可以在任意对象或方法上加锁,而加锁的这段代码称为 ...
- Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment
你能够把fragment看成是activity的模块化部分.它拥有自己的生命周期,接受它自己的输入事件,你能够在activity执行时加入或者删除它(有点像是一个"子activity&quo ...
- 算法笔记_106:蓝桥杯练习 算法提高 周期字串(Java)
目录 1 问题描述 2 解决方案 2.1 第一印象解法(80分) 2.2 借鉴网友解法(100分) 1 问题描述 问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有 ...
- OJ刷题---简单password破解
题目要求: 输入代码: #include<iostream> #include <cstdio> #include <cstring> using namespac ...
- 尚学堂的一个用了ExtJs的页面代码
<html> <head> <meta http-equiv="Content-Type" content="tex ...
- 常见SQL Server导入导出数据的几个工具
摘自:http://www.cnblogs.com/chenxizhang/archive/2011/06/09/2076542.html 在我们的日常工作中,与数据库打交道的机会越来越多.这一篇文章 ...
- JiaThis™“分享到”侧栏代码
风格:迷你: 猜你喜欢: 开启 使用说明: 复制并粘贴下面的JS代码,放到您的网页,可以在<body>和</body>的之间网页的任意位置放置.如果您的网站使用的模板, ...
- ajax 参数data问题 data中的 参数名 参数值为string 提交到后台后,会自动转换参数名相同的 类型 和 js字符串拼接
latlng"14.6005238,100.43635419999998"Cusid"accb5c1b-6aef-4f3b-a4eb-d60ea1ca5f54" ...