本文实例为大家分享了Java金额大小写转换的具体代码,供大家参考,具体内容如下
/**
* @ClassName: NumberConvert
* @Description: TODO
* @date 2013-3-07 下午16:08:10
* @version V1.0
*/
public class MoneyUtil {
/** 大写数字 */
private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
/** 整数部分的单位 */
private static final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰",
"仟" };
/** 小数部分的单位 */
private static final String[] DUNIT = { "角", "分", "厘" };
/**
* 得到大写金额。
*/
public static String toChinese(String str) {
str = str.replaceAll(",", "");// 去掉","
String integerStr;// 整数部分数字
String decimalStr;// 小数部分数字
// 初始化:分离整数部分和小数部分
if (str.indexOf(".") > 0) {
integerStr = str.substring(0, str.indexOf("."));
decimalStr = str.substring(str.indexOf(".") + 1);
} else if (str.indexOf(".") == 0) {
integerStr = "";
decimalStr = str.substring(1);
} else {
integerStr = str;
decimalStr = "";
}
// integerStr去掉首0,不必去掉decimalStr的尾0(超出部分舍去)
if (!integerStr.equals("")) {
integerStr = Long.toString(Long.parseLong(integerStr));
if (integerStr.equals("0")) {
integerStr = "";
}
}
// overflow超出处理能力,直接返回
if (integerStr.length() > IUNIT.length) {
System.out.println(str + ":超出处理能力");
return str;
}
int[] integers = toArray(integerStr);// 整数部分数字
boolean isMust5 = isMust5(integerStr);// 设置万单位
int[] decimals = toArray(decimalStr);// 小数部分数字
return getChineseInteger(integers, isMust5) + getChineseDecimal(decimals);
}
/**
* 整数部分和小数部分转换为数组,从高位至低位
*/
private static int[] toArray(String number) {
int[] array = new int[number.length()];
for (int i = 0; i < number.length(); i++) {
array[i] = Integer.parseInt(number.substring(i, i + 1));
}
return array;
}
/**
* 得到中文金额的整数部分。
*/
private static String getChineseInteger(int[] integers, boolean isMust5) {
StringBuffer chineseInteger = new StringBuffer("");
int length = integers.length;
for (int i = 0; i < length; i++) {
// 0出现在关键位置:1234(万)5678(亿)9012(万)3456(元)
// 特殊情况:10(拾元、壹拾元、壹拾万元、拾万元)
String key = "";
if (integers[i] == 0) {
if ((length - i) == 13)// 万(亿)(必填)
key = IUNIT[4];
else if ((length - i) == 9)// 亿(必填)
key = IUNIT[8];
else if ((length - i) == 5 && isMust5)// 万(不必填)
key = IUNIT[4];
else if ((length - i) == 1)// 元(必填)
key = IUNIT[0];
// 0遇非0时补零,不包含最后一位
if ((length - i) > 1 && integers[i + 1] != 0)
key += NUMBERS[0];
}
chineseInteger.append(integers[i] == 0 ? key : (NUMBERS[integers[i]] + IUNIT[length - i - 1]));
}
return chineseInteger.toString();
}
/**
* 得到中文金额的小数部分。
*/
private static String getChineseDecimal(int[] decimals) {
StringBuffer chineseDecimal = new StringBuffer("");
for (int i = 0; i < decimals.length; i++) {
// 舍去3位小数之后的
if (i == 3)
break;
chineseDecimal.append(decimals[i] == 0 ? "" : (NUMBERS[decimals[i]] + DUNIT[i]));
}
return chineseDecimal.toString();
}
/**
* 判断第5位数字的单位"万"是否应加。
*/
private static boolean isMust5(String integerStr) {
int length = integerStr.length();
if (length > 4) {
String subInteger = "";
if (length > 8) {
// 取得从低位数,第5到第8位的字串
subInteger = integerStr.substring(length - 8, length - 4);
} else {
subInteger = integerStr.substring(0, length - 4);
}
return Integer.parseInt(subInteger) > 0;
} else {
return false;
}
}
public static void main(String[] args) {
String number = "1.23";
System.out.println(number + " " + MoneyUtil.toChinese(number));
number = "1234567890123456.123";
System.out.println(number + " " + MoneyUtil.toChinese(number));
number = "0.0798";
System.out.println(number + " " + MoneyUtil.toChinese(number));
number = "10,001,000.09";
System.out.println(number + " " + MoneyUtil.toChinese(number));
number = "01.107700";
System.out.println(number + " " + MoneyUtil.toChinese(number));
}
}
运行结果为:
1.23 壹元贰角叁分
1234567890123456.123 壹仟贰佰叁拾肆万伍仟陆佰柒拾捌亿玖仟零壹拾贰万叁仟肆佰伍拾陆元壹角贰分叁厘
0.0798 柒分玖厘
10,001,000.09 壹仟万零壹仟元玖分
01.107700 壹元壹角柒厘
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java金额大小写转换
# java金额大小写
# java大小写转换
# 用Java将字符串的首字母转换大小写
# Java字母大小写转换的方法
# java实现人民币大小写转换方法分享
# 使用Java实现大小写转换实例代码
# Java 大小写最快转换方式实例代码
# Java下变量大小写驼峰、大小写下划线、大小写连线转换
# Java大小写转换及一些常见的注意事项详解
# 必填
# 万元
# 壹仟
# 舍去
# 出现在
# 大家分享
# 转换为
# 到第
# 具体内容
# 大家多多
# 不包含
# 字串
# 下午
# str
# replaceAll
# integerStr
# toChinese
# String
# final
# static
相关文章:
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
家具网站制作软件,家具厂怎么跑业务?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
图册素材网站设计制作软件,图册的导出方式有几种?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
模具网站制作流程,如何找模具客户?
,网页ppt怎么弄成自己的ppt?
如何自定义建站之星模板颜色并下载新样式?
如何通过虚拟机搭建网站?详细步骤解析
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
实例解析Array和String方法
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
如何快速生成专业多端适配建站电话?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
免费视频制作网站,更新又快又好的免费电影网站?
如何在香港服务器上快速搭建免备案网站?
建站之星伪静态规则如何正确配置?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
北京专业网站制作设计师招聘,北京白云观官方网站?
如何快速搭建高效服务器建站系统?
股票网站制作软件,网上股票怎么开户?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
西安专业网站制作公司有哪些,陕西省建行官方网站?
利用JavaScript实现拖拽改变元素大小
小建面朝正北,A点实际方位是否存在偏差?
广平建站公司哪家专业可靠?如何选择?
C#如何序列化对象为XML XmlSerializer用法
如何用花生壳三步快速搭建专属网站?
官网网站制作腾讯审核要多久,联想路由器newifi官网
魔毅自助建站系统:模板定制与SEO优化一键生成指南
大型企业网站制作流程,做网站需要注册公司吗?
建站主机选购指南:核心配置优化与品牌推荐方案
韩国服务器如何优化跨境访问实现高效连接?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站主机类型有哪些?如何正确选型
建站之星如何实现PC+手机+微信网站五合一建站?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
高防服务器租用如何选择配置与防御等级?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何快速搭建高效香港服务器网站?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何快速搭建高效简练网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。