Java 货币金额大写格式

原创 2015年11月21日 10:48:33

/*
 * 1.将数字格式化,如果有小数,留3位到厘;
 * 2、分别将整数和小数部分转换为大写方式,并插入单位;
 * 3、组合整数和小数部分;
 */
public class ConvertMoney 
{
private static final Object[] STR_UNIT1 = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};
private static final Object[] STR_NUMBER = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
private static final Object[] STR_UNIT2 = {"角", "分","厘"};

public static void main(String[] args) 
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入金额:");//从控制端输入;
String convert = convert(scan.nextDouble());   //获取金额转换后的字符串;
System.out.println(convert);   //输出字符串;
}
    
//用于大写金额格式的转换;
private static String convert(double d) 
DecimalFormat df = new DecimalFormat("#0.###"); //实例化DecimalFormat对象;
String strNum = df.format(d);                    //格式化double数字;
String point = "";
if(strNum.indexOf(".") != -1)  //有小数部分的话,整数部分就以元结尾;
{
point = "元";
}
else//否则以元整结尾;
{
point = "元整";
} 
if(strNum.indexOf(".") != -1) //有小数点时调用getInteger()和getDecimal();
{
String num = strNum.substring(0, strNum.indexOf("."));   //截取整数部分;
if(num.length() > 12)
{
System.out.println("数字大于12位,不能完成转换!");
return "";
}
String result = getInteger(num) + point + getDecimal(strNum);
return result;
}
else      //没有小数点时,只要调用getInteger();
{
if(strNum.length() > 12)
{
System.out.println("数字大于12位,不能完成转换!");
return "";
}
String result = getInteger(strNum) + point;
return result;
}
}

/*
* 转换整数部分,先判断是否包含小数,然后把数字转换为字符串
* 并反转字符顺序(方便大写与单位的对应),为每个数字添加对应的大写单位;
*/
private static String getInteger(String num) 
{
num = new StringBuffer(num).reverse().toString();    //反转字符串;
StringBuffer temp = new StringBuffer();//实例化StringBuffer;
for(int i=0; i<num.length(); i++)
{
temp.append(STR_UNIT1[i]); //因为是反转,所以单位在前;
temp.append(STR_NUMBER[num.charAt(i)-48]);
}
temp.append("¥");
num = temp.reverse().toString(); //反转字符串;
return num; 
}

/*
* 截取小数部分,转换成大写格式;
*/
private static String getDecimal(String num) 
{
num = num.substring(num.indexOf(".")+1, num.length());       //截取小数部分;
StringBuffer temp = new StringBuffer();  //实例化StringBuffer;
for(int i=0; i<num.length(); i++)
{
temp.append(STR_NUMBER[num.charAt(i)-48]);
temp.append(STR_UNIT2[i]);
}
num = temp.toString();
return num;
}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java 数字转换为汉语中人民币的大写

package com.yunshouhu; import java.math.BigDecimal; /** * 数字转换为汉语中人民币的大写 * http://www.cnblogs.c...
  • earbao
  • earbao
  • 2016年04月19日 19:08
  • 2166

字符串:货币金额大写格式

package based.string; import java.text.DecimalFormat; import java.util.Scanner; public class ...

Java 中使用POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写、单元格边框等

第一种:日期格式 cell.setCellValue(new Date(2008,5,5)); //set date format ...

浮点数转换为大写货币金额

/** * 浮点数转换为大写货币金额 * * @author Bobby * */ public class ConvertFloatNumToRMBFormat { private ...

Delphi货币类型转中文大写金额

在Delphi中,为了实现货币数值运算中的严格精度要求,内部把货币类型数据当作一个放大10000倍的64位整数来处理。这样根据64位整数的范围,可以得出货币类型Currency的范围是 [-92233...
  • tht2009
  • tht2009
  • 2017年06月15日 15:03
  • 284

货币金额大写转换

将小写阿拉伯数字转换为大写汉字广泛应用于银行各种书写情景 代码如下:import java.text.DecimalFormat; import java.util.Scanner; public ...

POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写

文章出处:点击打开链接 http://javacrazyer.iteye.com/blog/894850 再读本篇文章之前,请先看我的前一篇文章,前一篇文章中有重点讲到POI设置EX...

蓝桥杯 人民币金额大写 格式转换

在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印程序。 本题的任务是:从键盘输入一个十亿以内的正整数(int类型),把它转换为人民币金额大写(不考虑用户输入错误的情况)。 比如,用...
  • wr132
  • wr132
  • 2015年03月25日 16:33
  • 801
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 货币金额大写格式
举报原因:
原因补充:

(最多只允许输入30个字)