使用 JAVA 将数字金额转换成大写中文金额
2011-12-07 23:28
1026 查看
这个小工具类可以帮您把数字的金额转换成大写的中文金额,也可以转换成个性化的数字;
import java.text.DecimalFormat;
public class NumToString {
public static String init(String input){
StringBuffer str=new StringBuffer();
try {
//将数字格式化
double tempnum = Double.parseDouble(input);
DecimalFormat df=new DecimalFormat("##.##");
input = df.format(tempnum);
} catch (NumberFormatException e) {
System.out.println("请输入正确的值!");
return null;
}
//存放中文字符
String [] numStr1={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
// String [] numStr2={"零","一","二","三","四","五","六","七","八","九"};
//按点分割
String []nums = input.split("\\.");
//获取整数部分
String num=nums[0];
//获取小数部分
String num2 = "";
if(nums.length>1){
num2=nums[1];
}
//为整数部分转换值
for(int i = 0 ; i<num.length();i++){
boolean ws = true;
str.append(numStr1[(num.charAt(i))-48]);
if(numStr1[(num.charAt(i))-48]=="零"){
ws=false;
}
//增加单位名
int w = num.length()-i - 1;
if(w%4==1&&ws){
str.append("拾");
}else if(w%4==2&&ws){
str.append("佰");
}else if(w%4==3&&ws){
str.append("仟");
}else if(w%4==0&&w/4==1){
str.append("万");
}else if(w%4==0&&w/4==2){
str.append("亿");
}else if(w%4==0&&w/4==3){
str.append("兆");
}
}
//除掉重复的0
while(str.indexOf("零零")!=-1){
str.replace(str.indexOf("零零"), str.indexOf("零零")+2,"零");
}
//除掉末尾的0
while(str.indexOf("零亿")!=-1){
str.replace(str.indexOf("零亿"),str.indexOf("零亿")+2, "亿");
}
while(str.indexOf("零万")!=-1){
str.replace(str.indexOf("零万"),str.indexOf("零万")+2, "万");
}
while(str.indexOf("零兆")!=-1){
str.replace(str.indexOf("零兆"),str.indexOf("零兆")+2, "兆");
}
//除掉最后的零
while(str.charAt(str.length()-1)=='零'){
if(str.charAt(str.length()-1)=='零'){
str.deleteCharAt(str.length()-1);
}
}
//当万位全为0时
if(str.indexOf("亿万")!=-1){
str.replace(str.indexOf("亿万"), str.indexOf("亿万")+2,"亿");
}
str.append("元");
//如果为整数时则加整 ,如有小数部分则解析小数部分
if(!"00".equals(num2)&&num2 != ""){
int n=Integer.parseInt(num2.substring(0, 2));
int len = num2.length()>2?2:num2.length();
for(int k=0;k<len;k++){
if(k == 0&&numStr1[(num2.charAt(k))-48]!="零"){
str.append(numStr1[(num2.charAt(k))-48]);
str.append("角");
}else if(k==1&&numStr1[(num2.charAt(k))-48]!="零"){
str.append(numStr1[(num2.charAt(k))-48]);
str.append("分");
}
}
}else{
str.append("整");
}
return str.toString();
}
public static void main(String[] args) {
String numStr = init("60101230300.995");
System.out.println(numStr);
}
import java.text.DecimalFormat;
public class NumToString {
public static String init(String input){
StringBuffer str=new StringBuffer();
try {
//将数字格式化
double tempnum = Double.parseDouble(input);
DecimalFormat df=new DecimalFormat("##.##");
input = df.format(tempnum);
} catch (NumberFormatException e) {
System.out.println("请输入正确的值!");
return null;
}
//存放中文字符
String [] numStr1={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
// String [] numStr2={"零","一","二","三","四","五","六","七","八","九"};
//按点分割
String []nums = input.split("\\.");
//获取整数部分
String num=nums[0];
//获取小数部分
String num2 = "";
if(nums.length>1){
num2=nums[1];
}
//为整数部分转换值
for(int i = 0 ; i<num.length();i++){
boolean ws = true;
str.append(numStr1[(num.charAt(i))-48]);
if(numStr1[(num.charAt(i))-48]=="零"){
ws=false;
}
//增加单位名
int w = num.length()-i - 1;
if(w%4==1&&ws){
str.append("拾");
}else if(w%4==2&&ws){
str.append("佰");
}else if(w%4==3&&ws){
str.append("仟");
}else if(w%4==0&&w/4==1){
str.append("万");
}else if(w%4==0&&w/4==2){
str.append("亿");
}else if(w%4==0&&w/4==3){
str.append("兆");
}
}
//除掉重复的0
while(str.indexOf("零零")!=-1){
str.replace(str.indexOf("零零"), str.indexOf("零零")+2,"零");
}
//除掉末尾的0
while(str.indexOf("零亿")!=-1){
str.replace(str.indexOf("零亿"),str.indexOf("零亿")+2, "亿");
}
while(str.indexOf("零万")!=-1){
str.replace(str.indexOf("零万"),str.indexOf("零万")+2, "万");
}
while(str.indexOf("零兆")!=-1){
str.replace(str.indexOf("零兆"),str.indexOf("零兆")+2, "兆");
}
//除掉最后的零
while(str.charAt(str.length()-1)=='零'){
if(str.charAt(str.length()-1)=='零'){
str.deleteCharAt(str.length()-1);
}
}
//当万位全为0时
if(str.indexOf("亿万")!=-1){
str.replace(str.indexOf("亿万"), str.indexOf("亿万")+2,"亿");
}
str.append("元");
//如果为整数时则加整 ,如有小数部分则解析小数部分
if(!"00".equals(num2)&&num2 != ""){
int n=Integer.parseInt(num2.substring(0, 2));
int len = num2.length()>2?2:num2.length();
for(int k=0;k<len;k++){
if(k == 0&&numStr1[(num2.charAt(k))-48]!="零"){
str.append(numStr1[(num2.charAt(k))-48]);
str.append("角");
}else if(k==1&&numStr1[(num2.charAt(k))-48]!="零"){
str.append(numStr1[(num2.charAt(k))-48]);
str.append("分");
}
}
}else{
str.append("整");
}
return str.toString();
}
public static void main(String[] args) {
String numStr = init("60101230300.995");
System.out.println(numStr);
}
相关文章推荐
- Java中实现数字金额到中文大写字符的转换!! 选择自 netfalcon 的 Blog
- java代码:金融系统中,将数字转换成中文金额大写形式
- java实现数字金额转换中文大写金额
- java阿拉伯数字表示的金额转换成中文大写金额
- 用java代码将阿拉伯数字金额转换成中文大写
- Java中实现数字金额到中文大写字符的转换!!
- Java中实现数字金额到中文大写字符的转换!!
- 数字金额转换中文大写Java实现
- java实现金额数字转换为中文大写
- java阿拉伯数字与中文金额转换NumberTransferUtil
- Java数字金额转换为大写金额
- 使用C#实现阿拉伯数字到大写中文的转换
- 刚开始学Java,写了一个金额大写转换和中文大写数字转换的类
- JAVA实现数字大写金额转换的方法
- C#实现阿拉伯数字(小写金额)到大写中文(大写金额)的转换
- 输入数字转换成中文大写(钱,财务计算金额)
- 将数字金额转换为中文大写金额
- PHP中实现数字金额到中文大写字符的转换
- 正则也很牛,把阿拉伯数字的金额转换为中文大写数字
- 转 .Net/C#/VB/T-SQL/Java/Script 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)