博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 把金额转换为汉字表示的数量、获取字符串的MD5值
阅读量:6122 次
发布时间:2019-06-21

本文共 4622 字,大约阅读时间需要 15 分钟。

  hot3.png

工具类

import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import net.fortunes.admin.AdminHelper;import net.fortunes.admin.model.Dict;import net.sf.json.JSONObject;import org.apache.commons.lang.StringUtils;public class AppHelper extends AdminHelper {		public static String[] chineseDigits = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};			public static String getMD5Str(String str) {  		MessageDigest messageDigest = null;        try {          	messageDigest = MessageDigest.getInstance("MD5");              messageDigest.reset();	        messageDigest.update(str.getBytes("UTF-8"));          } catch (NoSuchAlgorithmException e) {              return null;        } catch (UnsupportedEncodingException e) {              return null;          }            byte[] byteArray = messageDigest.digest();           StringBuffer md5StrBuff = new StringBuffer();          for (int i = 0; i < byteArray.length; i++) {                          if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)                  md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));              else                  md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));           }             return md5StrBuff.toString().toUpperCase();  	} 		/**         * 把金额转换为汉字表示的数量,小数点后四舍五入保留两位         * @param amount         * @return         */         public static String amountToChinese(double amount) {                   if(amount > 99999999999999.99 || amount < -99999999999999.99)                  throw new IllegalArgumentException("参数值超出允许范围 (-99999999999999.99 ~ 99999999999999.99)!");                   boolean negative = false;              if(amount < 0) {                  negative = true;                  amount = amount * (-1);              }                   long temp = Math.round(amount * 100);              int numFen = (int)(temp % 10); // 分              temp = temp / 10;              int numJiao = (int)(temp % 10); //角              temp = temp / 10;              //temp 目前是金额的整数部分                   int[] parts = new int[20]; // 其中的元素是把原来金额整数部分分割为值在 0~9999 之间的数的各个部分              int numParts = 0; // 记录把原来金额整数部分分割为了几个部分(每部分都在 0~9999 之间)              for(int i=0; ; i++) {                  if(temp ==0)                      break;                  int part = (int)(temp % 10000);                  parts[i] = part;                  numParts ++;                  temp = temp / 10000;              }                   boolean beforeWanIsZero = true; // 标志“万”下面一级是不是 0                   String chineseStr = "";              for(int i=0; i
0) // 如果"万"的部分不为 0, 而"万"前面的部分小于 1000 大于 0, 则万后面应该跟“零” chineseStr = "零" + chineseStr; chineseStr = "万" + chineseStr; } } } chineseStr = partChinese + chineseStr; } if("".equals(chineseStr)) // 整数部分为 0, 则表达为"零元" chineseStr = chineseDigits[0]; else if(negative) // 整数部分不为 0, 并且原金额为负数 chineseStr = "负" + chineseStr; chineseStr = chineseStr + "元"; if(numFen == 0 && numJiao == 0) { chineseStr = chineseStr + "整"; } else if(numFen == 0) { // 0 分,角数不为 0 chineseStr = chineseStr + chineseDigits[numJiao] + "角"; } else { // “分”数不为 0 if(numJiao == 0) chineseStr = chineseStr + "零" + chineseDigits[numFen] + "分"; else chineseStr = chineseStr + chineseDigits[numJiao] + "角" + chineseDigits[numFen] + "分"; } return chineseStr; } /** * 把一个 0~9999 之间的整数转换为汉字的字符串,如果是 0 则返回 "" * @param amountPart * @return */ private static String partTranslate(int amountPart) { if(amountPart < 0 || amountPart > 10000) { throw new IllegalArgumentException("参数必须是大于等于 0,小于 10000 的整数!"); } String[] units = new String[] {"", "拾", "佰", "仟"}; int temp = amountPart; String amountStr = new Integer(amountPart).toString(); int amountStrLength = amountStr.length(); boolean lastIsZero = true; //在从低位往高位循环时,记录上一位数字是不是 0 String chineseStr = ""; for(int i=0; i

 

转载于:https://my.oschina.net/czpdjx/blog/1861883

你可能感兴趣的文章
企业级java springboot b2bc商城系统开源源码二次开发-hystrix参数详解(八)
查看>>
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>
mysql的innodb中事务日志(redo log)ib_logfile
查看>>
部署SSL证书后,网页内容造成页面错误提示的处理办法
查看>>
MS SQLSERVER通用存储过程分页
查看>>
60.使用Azure AI 自定义视觉服务实现物品识别Demo
查看>>
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
linux系统安装的引导镜像制作流程分享
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
bash complete -C command
查看>>
解决zabbix 3.0中1151端口不能运行问题
查看>>