package com.gcflower.util;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
//总体思路:
//对数字进行分级处理,级长为4
//对分级后的每级分别处理,处理后得到字符串相连
//如:123456=12|3456
//第二级:12=壹拾贰 + “万”
//第一级:3456 =叁千肆百伍拾陆 + “”
public final class RMB {
private double amount = 0.0D;
private static final String NUM = "零壹贰叁肆伍陆柒捌玖";
private static final String UNIT = "仟佰拾个";
private static final String GRADEUNIT = "仟万亿兆";
private static final String DOTUNIT = "角分厘";
private static final int GRADE = 4;
private static final String SIGN = "¥";
private static final NumberFormat nf = new DecimalFormat("#0.###");
/**
* 带参数的构造方法
* @param amount
*/
private RMB(double amount) {
this.amount = amount;
}
public static String toBigAmt(double amount) {
nf.setMinimumFractionDigits(2);//小数点后不足的补零
String amt = nf.format(amount);//将double类型的数格式化并转换成字符串,实际上进行了四舍五入
Double d = new Double(amount);
String dotPart = ""; //取小数位
String intPart = ""; //取整数位
int dotPos;
if ((dotPos = amt.indexOf('.')) != -1) {
intPart = amt.substring(0, dotPos);
dotPart = amt.substring(dotPos + 1);
if(dotPart.length()>4){ //超过4位直接截取
dotPart = dotPart.substring(0,4);
}
} else {
intPart = amt;
}
if (intPart.length() > 16)
throw new java.lang.InternalError("数额太大,无法转换。");
String intBig = intToBig(intPart);
String dotBig = dotToBig(dotPart);
//以下代码稍做修改,现在好多了。
if ((dotBig.length() == 0) && (intBig.length() != 0)) {
return intBig + "元整";
} else if ((dotBig.length() == 0) && (intBig.length() == 0)) {
return intBig + "零元";
} else if ((dotBig.length() != 0) && (intBig.length() != 0)) {
return intBig + "元" + dotBig;
} else {
return dotBig;
}
}
/**
* 用来处理几角几分几厘
* @param dotPart
* @return
*/
private static String dotToBig(String dotPart) {
//得到转换后的大写(小数部分)
String strRet = "";
for (int i = 0; i < dotPart.length() && i < 3; i++) {
int num;
if ((num = Integer.parseInt(dotPart.substring(i, i + 1))) != 0)
strRet += NUM.substring(num, num + 1)+ DOTUNIT.substring(i, i + 1);
}
return strRet;
}
/**
* 用来处理多少元 ,这个要仔细考虑才行
* @param intPart
* @return
*/
private static String intToBig(String intPart) {
//得到转换后的大写(整数部分)
int grade; //级长
String result = "";
String strTmp = "";
//得到当级长
grade = intPart.length() / GRADE;
//调整级次长度
if (intPart.length() % GRADE != 0)
grade += 1;
//对每级数字处理,先处理最高级,然后再处理低级的
for (int i = grade; i >= 1; i--) {
strTmp = getNowGradeVal(intPart, i);//取得当前级次数字
result += getSubUnit(strTmp);//转换大写
//System.out.println(strTmp+"|"+getSubUnit(strTmp));
result = dropZero(result);//除零 去掉连续的零
//System.out.println("result="+result);
//加级次单位
if (i > 1) //末位不加单位
//单位不能相连续
//注意:连续4个零的时候要特殊处理(wmj修改此bug)
if(getSubUnit(strTmp).equals("零零零零")){
result = result+"零";
}else{
result += GRADEUNIT.substring(i - 1, i);
}
}
return result;
}
private static String getNowGradeVal(String strVal, int grade) {
//得到当前级次的串
String rst;
if (strVal.length() <= grade * GRADE)
rst = strVal.substring(0, strVal.length() - (grade - 1) * GRADE);
else
rst = strVal.substring(strVal.length() - grade * GRADE, strVal.length() - (grade - 1) * GRADE);
return rst;
}
private static String getSubUnit(String strVal) {
//数值转换
String rst = "";
for (int i = 0; i < strVal.length(); i++) {
String s = strVal.substring(i, i + 1);
int num = Integer.parseInt(s);
if (num == 0) {
//“零”作特殊处理
if (i != strVal.length()) //转换后数末位不能为零
rst += "零";
} else {
//If IntKey = 1 And i = 2 Then
//“壹拾”作特殊处理
//“壹拾”合理
//Else
rst += NUM.substring(num, num + 1);
//End If
//追加单位
if (i != strVal.length() - 1)//个位不加单位
rst += UNIT.substring(i + 4 - strVal.length(), i + 4 - strVal.length() + 1);
}
}
return rst;
}
/**
* 本地默认输出货币值
* 中国
* @param d
* @return
*/
public static String currencyMoneyFormat(double d){
//NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
//NumberFormat germanformat = NumberFormat.getInstance(Locale.CHINA);//china format
NumberFormat currencyFormat = NumberFormat.getInstance(Locale.CHINA);
return currencyFormat.format(d);
}
/**
*
* @param strVal
* @return
*/
private static String dropZero(String strVal) {
//去除连继的“零”
String strRst;
String strBefore; //前一位置字符
String strNow; //现在位置字符
strBefore = strVal.substring(0, 1);
strRst = strBefore;
for (int i = 1; i < strVal.length(); i++) {
strNow = strVal.substring(i, i + 1);
if (strNow.equals("零") && strBefore.equals("零"))
;//同时为零
else
strRst += strNow;
strBefore = strNow;
}
//末位去零
if (strRst.substring(strRst.length() - 1, strRst.length()).equals("零"))
strRst = strRst.substring(0, strRst.length() - 1);
return strRst;
}
public static void main(String[] args) throws InterruptedException{
System.out.println( RMB.toBigAmt(12131234D));
double d = 10000.0 / 3.0;
System.out.println("无格式化输出:" + d);
// 使用本地默认格式输出数
NumberFormat numberFormat = NumberFormat.getNumberInstance();
//numberFormat.setMaximumFractionDigits(4);
//numberFormat.setMinimumIntegerDigits(6);
String numberString = numberFormat.format(d);
System.out.println("本地默认格式输出数:" + numberString);
// 使用本地默认格式输出货币值
// 使用本地默认格式输出百分数
NumberFormat percentFormat = NumberFormat.getPercentInstance();
System.out.println("本地默认格式输出百分数:" + pe
没有合适的资源?快使用搜索试试~ 我知道了~
基于ssh框架的权限管理系统
共507个文件
gif:154个
png:59个
jar:44个
5星 · 超过95%的资源 需积分: 10 80 下载量 60 浏览量
2015-12-19
23:58:34
上传
评论
收藏 16.21MB RAR 举报
温馨提示
利用spring、Hibernet、struts2等框架实现的权限管理系统,实现资源、用户、权限、角色的增删改查,角色-资源管理,用户-角色管理等基础功能,可以作为springmvc+spring+hibernate的增删改查入门项目......
资源推荐
资源详情
资源评论
收起资源包目录
基于ssh框架的权限管理系统 (507个子文件)
UserAction.class 7KB
AclService.class 6KB
AclAction.class 5KB
BaseDao.class 5KB
RMB.class 5KB
UserService.class 5KB
TearmService.class 5KB
TearmAction.class 4KB
SalesmanAction.class 4KB
AclDao.class 4KB
ModuleAction.class 4KB
RoleAction.class 4KB
PageManager.class 3KB
ModuleService.class 3KB
SalesmanService.class 3KB
RoleService.class 3KB
Acl.class 3KB
Salesman.class 3KB
HibernateSessionFactory.class 3KB
Module.class 3KB
Tearm.class 2KB
User.class 2KB
BaseDao$2.class 2KB
BaseAction.class 2KB
BaseDao$1.class 2KB
DateUtil.class 2KB
UserDao.class 2KB
ModuleDao.class 1KB
UsersRoles.class 1KB
StringUtil.class 1KB
SessionInterceptor.class 1KB
RoleDao.class 1KB
HttpUtil.class 1KB
Role.class 1KB
TearmDao.class 830B
SalesmanDao.class 707B
UsersRolesDao.class 705B
Permission.class 550B
.classpath 4KB
org.eclipse.wst.common.component 453B
org.eclipse.wst.jsdt.ui.superType.container 49B
pagecss.css 30KB
css.css 16KB
style.css 11KB
fox.css 7KB
zTreeStyle.css 6KB
skin.css 5KB
colorbox.css 4KB
datepicker.css 4KB
datepicker.css 4KB
jquery.treeview.css 3KB
demo.css 2KB
SimpleTree.css 1KB
WdatePicker.css 158B
Thumbs.db 175KB
login-content-bg.gif 20KB
login-wel.gif 9KB
zTreeStandard.gif 5KB
logo.gif 5KB
menu_bg2.gif 4KB
servicezhgb2312.gif 3KB
buttom-right.gif 2KB
ershou_1.gif 2KB
ershou_2.gif 2KB
save.gif 2KB
treeview-default-line.gif 2KB
menu_bgs.gif 2KB
title.gif 2KB
print.gif 2KB
titlebg1.gif 2KB
sitebackup.gif 2KB
DefaultDocs.gif 2KB
menu_bg11.gif 2KB
treeview-black-line.gif 2KB
treeview-red-line.gif 2KB
treeview-gray-line.gif 2KB
tool-down-pic.gif 2KB
buttom-left.gif 2KB
mime.gif 2KB
mime.gif 2KB
password.gif 2KB
ad.gif 2KB
img.gif 2KB
lminfo.gif 2KB
defind.gif 2KB
ipsecurity.gif 2KB
user-info.gif 2KB
img.gif 2KB
Redirects.gif 2KB
usercontrol.gif 2KB
menu_bg1.gif 1KB
addpic.gif 1KB
lm.gif 1KB
Login_but.gif 1KB
treeview-famfamfam.gif 1KB
pic19.gif 1KB
treeview-gray.gif 1KB
treeview-red.gif 1KB
treeview-default.gif 1KB
treeview-black.gif 1KB
共 507 条
- 1
- 2
- 3
- 4
- 5
- 6
ggjjllpp
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页