###### 把数字转成大写的人民币，用于发票打印

import java.math.BigDecimal;

/**
* 把数字或字符的货币转换成人民币大写
*
* @author 250713z
*
*/
public class MoneyConvert {

public static String changeToBig(double value) {
String strPrix="";
if(value<0){
strPrix="负";
value=(-1)*value;
}
char[] hunit = { '拾', '佰', '仟' };
char[] vunit = { '万', '亿' };
char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };

BigDecimal big = new BigDecimal(String.valueOf(value));
String valStr = String.valueOf(big.multiply(new BigDecimal(100))
.toBigInteger());

// 转化成字符串
String rail = valStr;
if (valStr.length() > 2)
head = valStr.substring(0, valStr.length() - 2);
if (valStr.length() > 2)
rail = valStr.substring(valStr.length() - 2);
rail = String.valueOf(Integer.parseInt(rail));

// 整数部分
StringBuffer prefix = new StringBuffer("");
// 小数部分
StringBuffer suffix = new StringBuffer("");

// 处理小数点前面的数
char zero = '0';
byte zeroSerNum = 0;
for (int i = 0; i < chDig.length; i++) {
int idx = (chDig.length - i - 1) % 4;
int vidx = (chDig.length - i - 1) / 4;
if (chDig[i] == '0') {
zeroSerNum++;
if (zero == '0') {
zero = digit[0];
} else if (idx == 0 && vidx > 0 && zeroSerNum < 4) {
prefix.append(vunit[vidx - 1]);
zero = '0';
}
continue;
}
zeroSerNum = 0;
if (zero != '0') {
prefix.append(zero);
zero = '0';
}
prefix.append(digit[chDig[i] - '0']);
if (idx > 0)
prefix.append(hunit[idx - 1]);
if ((idx == 0 || idx == 1) && vidx > 0) {
prefix.append(vunit[vidx - 1]);
}
}

if (prefix.length() > 0)
prefix.append('圆');

// 处理小数点后面的数
if (("00".equals(rail) || "0".equals(rail)) && prefix.length() > 0)
suffix.append("整");
else {
if (rail.length() == 1) {
if (prefix.length() > 0)
suffix.append("零")
.append(digit[rail.charAt(0) - '0'] + "分");
else
suffix.append(digit[rail.charAt(0) - '0'] + "分");
} else if ("0".equals(String.valueOf(rail.charAt(1))))
suffix.append(digit[rail.charAt(0) - '0'] + "角");
else
suffix.append(digit[rail.charAt(0) - '0'] + "角"
+ digit[rail.charAt(1) - '0'] + "分");
}

return (strPrix + prefix.append(suffix).toString());
}

public static float getF(){
return -78.00f;
}
public static void main(String args[]) throws Exception {

float f=78;
System.out.println(changeToBig(100.5));
System.out.println(changeToBig(11.15));
System.out.println(changeToBig(12.01));
System.out.println(changeToBig(12.50));
System.out.println(changeToBig(22222.50));
System.out.println(changeToBig(1000100.00));
System.out.println(changeToBig(100010.00));
System.out.println(changeToBig(3050010.55));
System.out.println(changeToBig(300010.02));
System.out.println(changeToBig(300010.2));
System.out.println(changeToBig(300010.12));
System.out.println(changeToBig(30101010.12));
System.out.println(changeToBig(11010.12));
System.out.println(changeToBig(58.0));
System.out.println(changeToBig(121.31));
System.out.println(changeToBig(Double.parseDouble(121.31 +"f")));
System.out.println(changeToBig(getF()));
}

}

#### 人民币金额中数字格式转化为中文的人民币大写格式的全部代码

2015-06-05 15:54:29

#### 人民币金额大写 在与财务相关的应用中，经常会用到人民币金额的大写，比如发票的打印程序。 本题的任务是：从键盘输入一个十亿以内的正整数（int类型），把它转换为人民币金额大写（不考虑用户输入错误

2013-04-23 16:28:39

#### 人民币大写不会写怎么办？

2017-03-27 10:45:58

#### 数字金额转换成发票上大写的中文字

2009年03月16日 5KB 下载

#### C#,数字转人民币大写方法

2007-02-11 16:19:00

#### 用SQL SERVER函数将人民币数字转换成大写形式

2008-02-22 01:21:00

#### Qt将数字转为中文大写金额

2017-08-02 18:25:35

#### oracle数字转换为人民币大写

2016-01-21 10:59:31

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

2015-03-25 16:33:10

#### 财务大写的有关规定

2016-07-12 18:13:58