package com.string.test;
import java.text.DecimalFormat;
public class MoneyConversionUtil {
private static final String NUMBER_STR = "零壹贰叁肆伍陆柒捌玖"; // 0-9所对应的汉字
private static final String MONEY_UNIT = "厘分角元拾佰仟万拾佰仟亿拾佰仟万"; // 货币单位列表
private static final DecimalFormat df = new DecimalFormat("#.000"); // 进行货币格式化
/**
* 得到货币的中文标准表示
*
* @param double value
* @return String
*/
public static String show(double value) {
StringBuffer resultStr = new StringBuffer();// 返回的最终结果
StringBuffer valueStr = new StringBuffer(df.format(value)).reverse();// 将数据倒序后进行分析
valueStr.deleteCharAt(valueStr.indexOf("."));
int zeroSize=0;
int valueStr_length = valueStr.length();// 得到拆分后的长度
for (int i = 0; i < valueStr_length; i++) {
int posNum = Integer.valueOf(valueStr.substring(i, i + 1));// 读取出数据位的数据转换为数值
String x = "";
if (0 == posNum) {
x = NUMBER_STR.substring(posNum, posNum + 1);//出现0的时候不添加单位中文表示
zeroSize++;
} else {
x = NUMBER_STR.substring(posNum, posNum + 1)
+ MONEY_UNIT.substring(i, i + 1);// 数字中文表示 + 单位中文表示
}
resultStr.insert(0, x);
}
if(zeroSize!=0){
// 对resultStr中可能存在的双零情况进行解决
for (int j = 0; j < resultStr.length(); j++) {
String front = resultStr.substring(j, j+1);
String back = resultStr.substring(j, j+1);
if(front.equals(back) && front.equals("零")){
resultStr.deleteCharAt(j);
}
}
}
return resultStr.toString();
}
public static void main(String[] args) {
System.out.println(show(1000.567));
// 壹仟贰佰零拾玖元伍角陆分柒厘
}
}
double类型的数字变为汉字(金额)
最新推荐文章于 2021-03-21 05:44:16 发布