java里将金额转换成汉字输出
代码片
package test;
import java.text.DecimalFormat;
public class Test1 {
public static void main(String[] args) {
System.out.println(numberToChacters(17649065.41));
}
public static String numberToChacters(double n) {
n = sswl(n, 2);
String result=new DecimalFormat("#").format(n * 100.0);
System.out.println(result);
final char[] chars = result.toCharArray();
final char[] change = { '\u96f6', '\u58f9', '\u8d30', '\u53c1', '\u8086', '\u4f0d', '\u9646', '\u67d2', '\u634c', '\u7396' };
final char[] postfix3 = { '\u5206', '\u89d2', '\u5143', '\u62fe', '\u4f70', '\u4edf', '\u4e07', '\u62fe', '\u4f70', '\u4edf', '\u4ebf', '\u62fe', '\u4f70', '\u4edf', '\u4e07', '\u62fe', '\u4f70', '\u4edf' };
result = "";
int i;
for (int size = i = chars.length - 1; i > -1; --i) {
chars[size - i] = change[Integer.parseInt(String.valueOf(chars[size - i]))];
result = result + String.valueOf(chars[size - i]) + String.valueOf(postfix3[i]);
}
for (int j = 0; j < 3; ++j) {
result = result.replaceAll("\u96f6[\u62fe\u4f70\u4edf]\u96f6", "\u96f6");
}
result = result.replaceAll("\u96f6\u4ebf", "\u4ebf");
result = result.replaceAll("\u96f6\u4e07", "\u4e07");
result = result.replaceAll("\u96f6\u5143", "\u5143");
result = result.replaceAll("\u96f6\u4f70", "\u96f6");
result = result.replaceAll("\u96f6\u62fe", "\u96f6");
result = result.replaceAll("\u96f6\u4edf", "\u96f6");
result = result.replaceAll("\u4ebf\u4e07", "\u4ebf");
result = result.replaceAll("^\u58f9\u62fe", "\u58f9\u62fe");
result = result.replaceAll("\u96f6\u5206", "");
result = result.replaceAll("\u96f6\u89d2$", "");
result = result.replaceAll("\u96f6\u89d2", "\u96f6");
if (result.equals("")) {
result = "\u96f6\u5143";
}
result = result.replaceAll("\u5143$", "\u5143\u6574");
return result;
}
public static double sswl(double ys, int xs)
{
double res = 0.0D;
double sx = Math.pow(10.0D, xs);
res = Math.round(sx * ys) / sx;
return res;
}
}